WO2016038673A1 - Error correction device, error correction method, and error correction system - Google Patents

Error correction device, error correction method, and error correction system Download PDF

Info

Publication number
WO2016038673A1
WO2016038673A1 PCT/JP2014/073760 JP2014073760W WO2016038673A1 WO 2016038673 A1 WO2016038673 A1 WO 2016038673A1 JP 2014073760 W JP2014073760 W JP 2014073760W WO 2016038673 A1 WO2016038673 A1 WO 2016038673A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
error
data
type
memory
Prior art date
Application number
PCT/JP2014/073760
Other languages
French (fr)
Japanese (ja)
Inventor
忠幸 松村
田中 剛
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/073760 priority Critical patent/WO2016038673A1/en
Publication of WO2016038673A1 publication Critical patent/WO2016038673A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents

Definitions

  • the present invention relates to an error correction device, an error correction method, and an error correction system.
  • FIG. 1 shows a configuration example of an 8-layer 8-channel stacked memory.
  • a stacked memory 100 in which a plurality of memory chips 110 are connected to each other by a TSV (through silicon via) 140 as shown in FIG.
  • TSV through silicon via
  • HBM High Bandwidth Memory
  • HMC Hybrid Memory Cube
  • the stacked memory 100 may include not only the memory chip 110 but also a control chip 120 as shown in FIG. An interface between the stacked memory 100 and the outside is called a channel 130.
  • the stacked memory 100 may include a plurality of channels 130.
  • FIG. 1 illustrates an example in which eight channels 130 are mounted on the stacked memory 100 including eight memory chips 110 and one control chip 120. .
  • the first type of failure is a transient failure in which data in the memory is temporarily destroyed when, for example, neutrons or ⁇ rays collide and pass through the memory chip.
  • the second type of failure is a permanent failure in which the circuit cannot satisfy a desired function due to, for example, circuit wear or the like, and data is permanently destroyed after the failure occurs. Transient faults are also called soft errors.
  • error detection and soft error countermeasures using correction codes that can detect and correct an arbitrary 1-bit error in data by redundantly adding check bits to data have been performed so far. It was.
  • the error correction code and the error detection code are collectively referred to as an error control code.
  • a 1-bit error correction-2 bit error detection code (SEC-DED code: Single Error Correction-Double Error Detection Code) capable of detecting an error occurring in a bit is widely known.
  • FIG. 2 shows an example of the channel format of HBM.
  • a channel that is an interface to a memory has a configuration in which a 16-bit check bit 220 can be added to a 128-bit data bit 210.
  • FIG. 3 shows an example of an HMC channel format.
  • the HMC includes four sets of 32-bit data bits 310 and 4-bit check bits 320, and has a configuration in which a total of 128-bit data bits and a total of 16-bit check bits are combined. Therefore, in both the HBM and HMC examples, 128 bits of data and 16 bits of check bits are considered as two sets of 64 bits of data and 8 bits of check bits. It is possible to apply a method similar to the conventional method.
  • byte error detection and correction codes capable of detecting and correcting errors are used as permanent failure countermeasure techniques even when a plurality of bits in a batch are erroneous at the same time.
  • the byte is a unit composed of a plurality of consecutive bits, and the number of bits constituting the byte is called a byte length.
  • FIG. 4 shows a configuration example of x4 DIMM.
  • a DIMM 400 (Dual Inline Memory Module) combines output bits from a plurality of memory chips 410 mounted on the DIMM 400 as shown in FIG. 4 to form a desired data width.
  • a failure due to the influence of the entire memory chip 410 occurs due to a failure of the row address decoder, a failure of the power supply circuit, or the like, a plurality of bits output from the failed memory chip are failed.
  • a DIMM 400 that outputs 4 bits from each memory chip 410 constitutes 64-bit data by collecting output bits from 16 memory chips 410.
  • a 4-bit block output from the failed memory chip out of 64-bit data is erroneous.
  • a byte error control positive code capable of detecting and correcting these byte errors is applied to a permanent failure of a memory chip failure. For example, in the case of an error with a byte length of 4, an arbitrary 1-byte error in a total of 144 bits of data and check bits is corrected by adding a 16-bit check bit to 128-bit data.
  • a 1-byte error correction code that can detect byte errors and a 2-byte error detection code S4EC-D4ED code: Single 4-bit Error Correction-Double 4-bit Error Detection Code
  • Patent Document 1 describes a cross-interleaved Reed-Solomon code (CIRC) that forms a code having higher error control capability than a case where each code is applied independently by applying two codes in combination. Yes.
  • Non-Patent Document 1 discloses a specific configuration method of the SEC-DED-SbED code that has an error control capability equivalent to that of the SEC-DED code and can detect a byte error having a byte length of b bits. Are listed.
  • the stacked memory 100 used in the high-reliability application field such as the HPC field and the data center, it is desirable to apply the permanent failure countermeasure of the memory unit or channel.
  • the stacked memory 100 such as an HBM or HMC is provided as a module in which a plurality of memory chips 110 are stacked by the TSV 140, and a computer chip for the computer system designer to separately output a test bit cannot be added.
  • bit widths of the data bits and check bits in the channel 130 that are interfaces with the stacked memory 100 are defined in advance by the specifications, and the computer system designer cannot increase the check bits in the channel. Therefore, when an error control code is applied as a countermeasure against a permanent failure of a memory unit or channel in a stacked memory 100 such as an HBM or an HMC, only codes that can be configured with the number of check bits determined in advance may be applied. Can not.
  • each channel 130 is built in each memory chip 110, for example, when a permanent failure occurs in the memory chip 110 that is an example of the memory unit, 128 bits of data output from the channel corresponding to the memory chip 110, All of 144 bits in total including 16 check bits are faulty. That is, in this case, it is necessary to handle an error having a byte length longer than that of the conventional DIMM 400. More check bits are required for error detection and control of a long byte length. Therefore, it is impossible to apply the permanent failure countermeasure technique in the conventional DIMM, the cross interleaved Reed-Solomon code described in Patent Document 1, the SEC-DED-SbED code described in Non-Patent Document 1, and the like.
  • the first problem is that the bit widths of data bits and check bits output from each memory unit are determined in advance, and new bits cannot be added as in the conventional DIMM 400.
  • the second problem is that when a permanent failure occurs, the number of erroneous bits is larger than that of the conventional DIMM 400 or the like.
  • This proposal was devised in view of the above problems, and discloses a configuration and method for detecting and correcting an error caused by a permanent failure of a memory unit or a channel in a memory device.
  • the present invention employs the following configuration, for example.
  • An error correction device for reading data from a memory device and correcting an error in the read data, wherein the memory device is encoded by a code process in a product code of a first type code and a second type code In the first data, an arbitrary first type codeword encoded by the first type code and an arbitrary second type codeword encoded by the second type code.
  • the data length that overlaps with the second type code is less than or equal to the byte length
  • the error correction device reads the first data from the memory device and the read first data
  • Decryption process And when the second decoding processing unit detects an uncorrectable error in the first type 2 codeword acquired from the memory device, the first type 2 codeword generates an error.
  • An error flag indicating inclusion is set, and the first decoding processing unit includes a first byte included in the first type 2 codeword and is stored in each of different memory units in the memory device.
  • An error correction device for correcting an error in the first byte based on the error flag in a first type 1 codeword composed of bytes.
  • erroneous data output from a failure location can be detected with high accuracy when a memory unit or channel failure occurs in the memory device.
  • a memory unit or channel failure occurs in the memory device.
  • Example 1 It is a block diagram which shows the structural example of the laminated memory of 8 layers 8 channels. It is a figure which shows the example of the channel format of HBM. It is a figure which shows the example of the channel format of HMC. It is a figure which shows the structural example of x4 DIMM.
  • Example 1 it is a block diagram which shows the structural example of an error correction system.
  • Example 1 it is a block diagram which shows the structural example of the memory chip by which 1 channel is arrange
  • Example 1 it is a figure which shows the 1st example of the byte division
  • Example 1 it is a block diagram which shows the structural example of an error check code
  • Example 1 it is a block diagram which shows the structural example of a CODE_H decoding process part.
  • Example 1 it is a block diagram which shows the structural example of a CODE_V decoding process part.
  • Example 1 it is a flowchart which shows the 1st example of a decoding process.
  • Example 1 it is a flowchart which shows the 2nd example of a decoding process.
  • Example 1 it is a figure which shows the example of the 2nd error pattern when the memory chip in a laminated memory fails.
  • Example 1 it is a figure which shows the example of the 3rd error pattern when the memory chip in a laminated memory fails. In Example 1, it is a figure which shows the example of the error pattern in the data of 2 cycles output from the same channel. In Example 1, it is a figure which shows the 2nd example of the byte division
  • FIG. 3 is a block diagram illustrating a configuration example of a memory chip in which two channels are arranged in the first embodiment. In Example 1, it is a figure which shows the 1st example of the error control code applied when 2 channels are arrange
  • Example 1 it is a figure which shows the example of application of an error control code when a bank failure is assumed.
  • Example 2 it is a figure which shows the example of an error control code application using four laminated memories.
  • Example 3 it is a figure which shows the channel structural example of HMC.
  • Example 3 it is a figure which shows the example of the error pattern by TSV failure.
  • Example 3 it is a figure which shows the example of the error pattern before and behind the data rearrangement which fixes the bit which becomes an error by TSV failure to a specific byte.
  • FIG. 5 shows a configuration example of the error control system of this embodiment.
  • the error control system includes a stacked memory 100 and a processor chip 700 connected to the stacked memory 100.
  • the stacked memory 100 is an example of a memory device, and has a configuration similar to that of FIG.
  • the processor chip 700 includes a memory controller 710, a plurality of processors 720, and a DMA control unit 730.
  • the memory controller 710 performs data error control and read / write control to the memory from the processor 720 and the DMA control unit 730.
  • the processor 720 operates in accordance with a program, inputs / outputs data, reads / writes data, and executes each program to be described later.
  • the DMA control unit 730 controls communication in DMA transfer.
  • the memory controller 710 includes, for example, a memory interface 711, a write control unit 712, an error check code encoding unit 713, a read control unit 714, and an error check code decoding unit 715.
  • the memory interface 711 is an interface that inputs and outputs data and the like from the stacked memory 100.
  • the write control unit 712 / read control unit 714 is a program and controls writing / reading of data to / from the stacked memory 100 from the processor 720 and the DMA control unit 730.
  • the error check code encoding unit 713 includes a program and performs an encoding process on data written to the stacked memory 100.
  • the error check code decoding unit 715 includes a program, performs a decoding process on data read from the stacked memory 100, and performs error detection and error correction.
  • the error control system of the present embodiment is not limited to the configuration of FIG. 5, for example, the memory controller 710 may be configured in the control chip 120 in the stacked memory 100.
  • the program is executed by the processor 720 to perform a predetermined process using the storage device and the memory interface 711. Therefore, in the present embodiment and other embodiments, the description with the program as the subject may be the description with the processor 720 as the subject. Alternatively, the process executed by the program is a process performed by a computer and a computer system on which the program operates.
  • the processor 720 operates as a functional unit that realizes a predetermined function by operating according to a program.
  • the processor 720 functions as a write control unit by operating according to the write control unit 712, and functions as a read control unit by operating according to the read control unit 714.
  • the processor 720 also operates as a functional unit that implements each of a plurality of processes executed by each program.
  • a computer and a computer system are an apparatus and a system including these functional units.
  • the program can be installed in each computer by a program distribution server or a computer-readable non-transitory storage medium, and can be stored in a nonvolatile storage device of each computer.
  • FIG. 6 shows a configuration example of channels when one channel is arranged in one memory chip.
  • the stacked memory 100 is composed of eight layers of memory chips and incorporates a total of eight channels. That is, there is a one-to-one correspondence between memory chips and channels.
  • FIG. 6 the case where the memory chip 1 (111) fails and the total 144 bits of the data bits 128 bits and the check bits 16 bits input / output when accessing the channel 1 (131) becomes an error is shown.
  • the error means that the data read / written to / from the memory has a value different from that originally expected.
  • An error control code that detects and corrects a 144-bit error by adding a 16-bit check bit to 128-bit data is not known.
  • FIG. 7 shows an example of an error control code applied in this embodiment.
  • FIG. 8 shows a first example of the byte division format of the channel.
  • the system disclosed in the present embodiment applies a product code based on two error control codes to a data set obtained by collecting a plurality of channels, which is output from a plurality of stacked memories as shown in FIG.
  • the error check code encoding unit 713 first divides the total 144 bits of the data bits and check bits of each channel into, for example, a plurality of bytes (B0 to B9 and C0) as shown in FIG. To do. Of the divided bytes, 10 bytes from B0 to B9 each include 13 bits or 11 bits, and a total of 128 data bits. Each byte from B0 to B9 includes one check bit. The error check code encoding unit 713 configures the first code CODE_V using the check bits.
  • Each channel includes a byte C0 including 5 check bits in the second code CODE_H and 1 check bit for applying the code CODE_V to the 5 check bits.
  • the error check code encoding unit 713 divides each channel out of a total of 16 channels CH0 to CH15 included in two stacked memories (stacked memory 0 (100) and stacked memory 1 (101)). Put together the bytes.
  • the error check code encoding unit 713 applies, for example, a SEC-DED-S14ED code as the first code CODE_V to each group of collected bytes.
  • the error check code encoding unit 713 collects 16 bytes B0 from channel CH0 to channel CH15.
  • the error check code encoding unit 713 similarly applies the (224, 208) SEC-DED-S14ED code to B1 to B9. Note that since the bit length of the data bit to be encoded is not 13 in B9, the error check code encoding unit 713 applies a shortened code to B9.
  • each memory chip is a memory unit.
  • the error check code encoding unit 713 collects one channel for two cycles (cycle 0 and cycle 1).
  • the error check code encoding unit 713 includes a check bit of 10 bits (5 bits ⁇ 2) in total that is a check bit for 2 cycles of C0, and a data bit of 276 bits in total that is data for 2 cycles of B0 to B9 ,
  • the second code CODE_H is applied.
  • the error check code encoding unit 713 applies, for example, a (286,276) SEC-DED code as CODE_H.
  • the SEC-DED code is a code having the ability to correct an arbitrary 1-bit error in a code word and detect an arbitrary 2-bit error. Furthermore, the SEC-DED code can be detected probabilistically even for errors of 3 bits or more.
  • the SEC-DED-S14ED code is a code having the capability of detecting an arbitrary 1-byte error in a code word when the byte length is 14 bits in addition to the capability equivalent to the SEC-DED code described above. It is.
  • FIG. 9 shows a comparative example in which a code is applied to one cycle of data.
  • the example of FIG. 9 is different from the example of FIG. 7 in that CODE_H is applied to 2-channel data in one cycle.
  • CODE_H is applied to 2-channel data in one cycle.
  • the data of two channels is collected in order to secure the number of check bits for applying the SEC-DED code as CODE_H.
  • CODE_H is applied to two cycles of data output from the same memory chip.
  • an overlapping portion between an arbitrary codeword encoded by CODE_H and an arbitrary codeword encoded by CODE_V is equal to or less than the byte error detection length (1 byte) in CODE_V. Therefore, when an uncorrectable error due to CODE_H is detected, the channel in which the error has occurred can be uniquely determined by decoding in CODE_V.
  • FIG. 10 shows a configuration example of the error check code decoding unit 715.
  • the error check code decoding unit 715 includes a CODE_H decoding processing unit 1210 that performs a decoding process on the code CODE_H and a CODE_V decoding processing unit 1220 that performs a decoding process on the code CODE_V.
  • the input data output from each channel of the stacked memories 100 to 101 is first input to the CODE_H decoding processing unit 1210, where the SEC-DED code (CODE_H) is decoded.
  • the CODE_H decoding processing unit 1210 may perform CODE_H decoding processing on input data output from each channel in parallel.
  • FIG. 11 shows a configuration example of the CODE_H decoding processing unit 1210.
  • the CODE_H decoding processing unit 1210 includes a buffer 1211 and a syndrome generation unit 1212, an error correction unit 1213, and a syndrome decoding unit 1214, which are programs.
  • the buffer 1211 Since the code CODE_H is applied to data for two cycles output from the same channel, the buffer 1211 holds the data one cycle before. Note that the buffer 1211 may be included in the read control unit 714.
  • the syndrome generation unit 1212 generates a syndrome in CODE_H for the input data output from the stacked memory.
  • the linear code has a matrix called a check matrix that defines each code, and the syndrome is a vector value calculated as a product of the check matrix and the code word.
  • the syndrome decoding unit 1214 determines the presence / absence of an error and the location where the error occurred based on the value of the syndrome generated by the syndrome generation unit 1212.
  • the syndrome decoding unit 1214 transmits an error occurrence flag signal to the CODE_V decoding processing unit 1220 when it is determined that an uncorrectable error has occurred due to the decoding processing by CODE_H.
  • the error correction unit 1213 corrects the error in which the syndrome decoding unit 1214 specifies the occurrence location.
  • FIG. 12 shows a configuration example of the CODE_V decoding processing unit 1220.
  • the CODE_V decoding processing unit 1220 includes a syndrome generation unit 1221, an error correction unit 1222, a syndrome decoding unit 1223, and an error occurrence flag check unit 1224 which are programs.
  • the syndrome generation unit 1221 generates a syndrome in CODE_V for the intermediate data output from the CODE_H decoding processing unit 1210.
  • the syndrome decoding unit 1223 determines the presence / absence of an error and the location where the error occurred based on the value of the syndrome generated by the syndrome generation unit 1212.
  • the error correction unit 1222 corrects the error whose location has been identified by the syndrome decoding unit 1223.
  • the error occurrence flag checking unit 1224 uses the error occurrence flag signal received from the CODE_H decoding processing unit 1210 and the determination result by the syndrome decoding unit 1223 to determine the presence / absence of an error and the location where the error has occurred.
  • the error control system of this embodiment detects 100% of 144-bit errors that occur when the memory chip of the stacked memory fails due to the S14ED capability of code CODE_V.
  • the 144 bits output from each memory chip are divided into 11 bytes from B0 to C0 as shown in FIG. 8, and are distributed to different CODE_V codewords.
  • B0 to B9 are composed of 14 bits
  • B9 is composed of 12 bits
  • C0 is composed of 6 bits.
  • Each codeword of CODE_V includes data of B0 to C0 in each memory chip. Therefore, the CODE-V SEC-DED-S14ED code capable of detecting a 1-byte error with a byte length of 14 makes it possible to detect a 144-bit error that occurs when a memory chip failure occurs.
  • the SEC-DED-S14ED code can detect a 1-byte error with a byte length of 14 but cannot correct the error. For this reason, the SEC-DED-S14ED code alone cannot correct a 144-bit error that occurs when a memory chip fails.
  • the SEC-DED-S14ED code specifies an error position in a byte according to the generated syndrome if it can separately know which byte is an error among a plurality of bytes constituting the code word. It is possible to correct an error in the byte.
  • the SEC-DED-S14ED code when the SEC-DED-S14ED code is applied to the 16-channel byte B0, the SEC-DED-S14ED code can detect if any one of the 16-byte B0 is wrong. . In addition, for example, if it is separately found that the error occurs in B0 of channel 1, the SEC-DED-S14ED code can specify the error position generated in B0 of channel 1.
  • the error control system uses the error occurrence flag that can be set as a result of the decoding process of CODE_H, which is the second code, to specify the memory chip in which the failure has occurred. Further, the error control system corrects the bytes output from the memory chip included in each CODE_V code word according to the generated syndrome.
  • FIG. 13 shows a first example of decoding processing by the error check code decoding unit 715.
  • the syndrome generation unit 1212 receives the CODE_H of C0 from the input data in each channel that combines the first cycle data received from the stacked memory held in the buffer 1211 and the second cycle data received from the stacked memory 100.
  • a syndrome in CODE_H is generated for each codeword in CODE_H, that is, data excluding 2 bits (1 bit ⁇ 2) that are not to be encoded by.
  • the syndrome generation unit 1212 transmits the generated syndrome to the syndrome decoding unit 1214 (S1101).
  • the syndrome decoding unit 1214 determines the presence / absence of an error and the location where the error occurred in the channel based on the received syndrome value, and transmits the determination result to the error correction unit 1213 (S1102). In the SEC-DED code, the syndrome decoding unit 1214 determines that there is no error in the codeword when the value of the syndrome is 0. Further, when the syndrome value matches any value of the column vector in the parity check matrix, the syndrome decoding unit 1214 determines that a 1-bit error has occurred. If the syndrome value is not 0 and does not match any column vector in the parity check matrix, the syndrome decoding unit 1214 determines that an uncorrectable 2-bit error has occurred.
  • the SEC-DED code can probabilistically detect an error of 3 bits or more. That is, even for an error of 3 bits or more, it is probable that the syndrome is not 0 and does not match any column vector of the check matrix. In this case, the syndrome decoding unit 1214 determines that an uncorrectable error has occurred, similarly to the 2-bit error.
  • the syndrome decoding unit 1214 does not detect an error (S1102: no error)
  • the process proceeds to step S1105 described later.
  • the error correction unit 1213 does not correct the input data in the channel, and transmits the data as it is to the CODE_V decoding processing unit 1220 as intermediate data in the channel.
  • the syndrome decoding unit 1214 detects a 1-bit error (S1102: 1-bit error)
  • the error correction unit 1213 corrects the 1-bit error.
  • Each syndrome calculated as the product of a check matrix of a code having 1-bit error correction capability and a code word of 1-bit error satisfies the property that all syndrome values are different for all 1-bit error patterns. Accordingly, the syndrome decoding unit 1214 can uniquely determine the position of the error occurrence bit for the 1-bit error based on the syndrome value.
  • the error correction unit 1213 corrects the data by inverting the bit at the uniquely determined bit position of the input data in the channel (S1103). At this time, the error correction unit 1213 transmits the corrected data to the CODE_V decoding processing unit as intermediate data in the channel.
  • the syndrome decoding unit 1214 cannot uniquely identify an erroneous bit position from the syndrome value. Therefore, the error correction unit 1213 cannot correct the error.
  • the syndrome decoding unit 1214 detects an error of 2 bits or more (S1102: uncorrectable error detection), it sets an error occurrence flag indicating that an error of 2 bits or more has occurred in the channel, and the error occurrence flag in the channel
  • the signal is transmitted to the CODE_V decoding processing unit 1220 (S1104).
  • the error correction unit 1213 does not correct the input data in the channel but transmits the data as it is to the CODE_V decoding processing unit 1220 as intermediate data in the channel.
  • the CODE_H decoding processing unit 1210 performs the processing in steps S1101 to S1104 for all codewords in all channels, that is, CODE_H.
  • the above is the decoding processing by the CODE_H decoding processing unit 1210.
  • decryption processing by the CODE_V decryption processing unit 1220 will be described.
  • the code CODE_V is applied to 16 channels of data including two stacked memories.
  • the syndrome generation unit 1221 generates a syndrome in CODE_V for data obtained by collecting the bytes of intermediate data for 16 channels output from the CODE_H decoding processing unit 1210 (S1105).
  • the syndrome generation unit 1221 transmits the generated syndrome to the syndrome decoding unit 1223.
  • the syndrome decoding unit 1223 performs error detection and correction on the byte using the syndrome generated by the syndrome decoding unit 1223 (S1106). At this time, the error occurrence flag checking unit 1224 detects that the error occurrence flag is set based on the error occurrence flag signal received from the CODE_H decoding processing unit 1210.
  • the syndrome decoding unit 1223 in the SEC-DED-S14ED code, according to the generated syndrome, similar to the syndrome decoding unit 1214 using the SEC-DED code, whether or not an error has occurred, 1-bit error correction, and 2-bit error detection is performed.
  • the syndrome decoding unit 1223 can detect a byte error having a byte length of 14 in the SEC-DED-S14ED code.
  • the error check code decoding unit 715 normally ends the decoding process on the data in which the bytes are collected (S1110).
  • the error correction unit 1222 corrects the 1-bit error (S1107). Subsequently, the error check code decoding unit 715 normally ends the decoding process on the data in which the bytes are collected (S1110).
  • the error occurrence flag checking unit 1224 receives the error occurrence flag detection signal received from the syndrome decoding unit 1214 Based on the above, it is checked whether the set error occurrence flag is one place (S1108).
  • the error occurrence flag checking unit 1224 determines that the set error occurrence flag is one (S1108: YES), it determines that a byte error has occurred in the channel in which the error occurrence flag is set. At this time, the error occurrence flag checking unit 1224 transmits an error occurrence channel signal including information on the channel to the error correction unit 1222. The error correction unit 1222 corrects the byte value output from the channel indicated by the error occurrence channel signal based on the syndrome value (S1109). Subsequently, the error check code decoding unit 715 normally ends the decoding process (S1110).
  • the error occurrence flag checking unit 1224 determines that the set error occurrence flag is not one place (S1108: No), there is a possibility that an error has occurred in a plurality of channels. Accordingly, the error occurrence flag checking unit 1224 cannot uniquely identify which channel is faulty, so the error correction unit 1222 cannot correct an error. In this case, the error occurrence flag checking unit 1224 sets an uncorrectable error detection signal indicating that an uncorrectable error has been detected, and ends error detection in the data in which the relevant byte is collected (S1111).
  • the CODE_V decoding processing unit 1220 performs the processing in steps S1105 to S1111 for all codewords in CODE_V. The above is the decoding processing by the CODE_V decoding processing unit 1220.
  • the CODE_H decoding processing unit 1210 may not be able to detect the error even if an error has occurred. . At this time, no error occurrence flag is set, and even if the CODE_V decoding processing unit 1220 detects a byte error, the error cannot be corrected. At this time, in step S1108, the error occurrence flag checking unit 1224 may set an uncorrectable error detection signal.
  • the uncorrectable error detection signal is sent to the memory controller 710, for example.
  • the memory controller 710 may leave a record of errors, for example, by setting a value in a register indicating that an uncorrectable error has occurred.
  • the operating system may take measures such as restarting the system using error recording or excluding the memory address from the page allocation target.
  • the error occurrence flag checking unit 1224 may notify not only that an uncorrectable error has occurred but also the address information on which the uncorrectable error has occurred, for example, to the memory controller 710 or the like.
  • the processing when the occurrence of these uncorrectable errors is detected can be determined by individual system design and is not limited to the processing described above.
  • FIG. 14 shows a second example of the decoding process performed by the error check code decoding unit 715. Only the differences between FIG. 14 and FIG. 13 will be described.
  • the error occurrence flag checking unit 1224 sets the error occurrence flag. It is checked whether it has not been done (S2812). That is, the syndrome decoding unit 1223 performs a check in step S2812 when there is no error in CODE_V.
  • the error check code decoding unit 715 normally ends the decoding process on the byte (S1110).
  • the error occurrence flag checking unit 1224 sets an uncorrectable error detection signal indicating that an uncorrectable error is detected, and an error in the data in which the bytes are collected. The detection ends (S1111).
  • the CODE_V decoding processing unit 1220 can detect the occurrence of an error according to the setting state of the error occurrence flag even when an error that can be detected only probabilistically cannot be detected. .
  • FIG. 15 shows a first example of an error pattern when a memory chip in the stacked memory fails.
  • the memory chip in which the channel 6 (CH6) in the stacked memory is mounted has failed, and all bytes of the channel 6 are incorrect.
  • the syndrome decoding unit 1214 transmits an error occurrence flag signal indicating that the channel 6 is in error to the CODE_V decoding processing unit 1220.
  • step S1108 the error occurrence flag checking unit 1224 determines that a byte error has occurred in the channel 6, and transmits an error occurrence channel signal to the error correction unit 1222.
  • step S1109 the error correction unit 1222 corrects the byte value output from the channel indicated by the error occurrence channel signal in each data based on the syndrome value.
  • the CODE_H decoding processing unit 1210 detects the byte error again stochastically.
  • the CODE_V decoding processing unit 1220 may include a storage element that holds information indicating that each chip has failed.
  • the CODE_V decoding processing unit 1220 writes, for example, a value indicating that the chip is defective at the time of byte error correction to the storage element.
  • the error occurrence flag checking unit 1224 checks the error occurrence flag by combining the failure chip information and the error occurrence flag signal output by the CODE_H decoding processing unit 1210 when the second or subsequent byte error is detected after the byte error correction. Do.
  • FIG. 16 shows a second example of an error pattern when a memory chip in the stacked memory fails.
  • the CODE_V decoding processing unit 1220 cannot uniquely identify an error occurrence chip, and thus cannot correct an error caused by a memory chip failure.
  • the memory chip 6 on which the channel 6 is mounted is faulty, and at the same time, two or more bits (B1 and B5) of the data in the channel 2 are incorrect.
  • the CODE_H decoding processing unit 1210 since the CODE_H decoding processing unit 1210 detects an error of 2 bits or more in each of the channel 2 and the channel 6, it sets an error occurrence flag indicating that the two channels of the channel 2 and the channel 6 are errors.
  • the error occurrence flag checking unit 1224 may have an error in two of the channel 2 and the channel 6, so which channel is out of order. Cannot be uniquely identified and the error cannot be corrected. In this case, in step S1111, the error occurrence flag checking unit 1224 sets an uncorrectable error detection signal indicating that an uncorrectable error has been detected.
  • FIG. 17 shows a third example of an error pattern when a memory chip in the stacked memory fails.
  • B1 of channel 2 and channel 6 is incorrect.
  • the crosses in FIG. 17 represent byte errors.
  • the CODE_H decoding processing unit 1210 detects an error of at least one of the channel 2 and the channel 6 using the SEC-DED code and sets an error occurrence flag in the channel where the error is detected.
  • B1 since B1 has a 2-byte error, the CODE_V decoding processing unit 1220 can only detect the error in the SEC-DED-S14ED code only probabilistically. Therefore, the CODE_V decoding processing unit 1220 may not be able to detect the error.
  • the error occurrence flag checking unit 1224 confirms the error occurrence flag, that is, the error detection is performed by performing the process of step S2812. Ability can be improved.
  • the error control system of the present embodiment detects and corrects a byte error by estimating a memory chip that is likely to have a memory chip failure with the code CODE_H when a byte error is detected with the code CODE_V. It can be carried out. As a result, the error control system of this embodiment can detect and correct a long bit error due to a failure of a memory unit or the like.
  • the error control system of the present embodiment uses a product code configured such that an overlapping part of a code word in an arbitrary CODE_H and a code word in an arbitrary CODE_V is equal to or less than the detection length of a byte error in CODE_V. Perform error control.
  • the CODE_H decoding processing unit 1210 detects an uncorrectable error by performing error control using the code
  • the CODE_V decoding processing unit 1220 uniquely identifies the channel in which the error has occurred. Can be confirmed.
  • FIG. 18 shows an example of an error pattern in 2-cycle data output from the same channel.
  • CODE_H is applied to 2-cycle data output from the same channel.
  • the number of bit errors in the data for two cycles is even when the number of bit errors in the channel 130 is an even number (CASE 1) and the case of an odd number (CASE 2).
  • a code called an odd-weighted SEC-DED code in which the weights of all the column vectors of the check matrix are odd numbers can detect an even number of errors in the data with high probability.
  • the vector weight is the number of non-zero elements of the vector. Therefore, as in this embodiment, for example, when a code is applied to data that passes through the same data path such as the same channel for an even number of cycles, an error can be detected with high probability by applying an odd weight code. it can.
  • CODE_H has an error detection function
  • CODE_V is a code that can specify that the error has occurred in a specific memory chip (specific channel) using the detection result of CODE_H. That's fine.
  • CODE_H may be a single parity check code.
  • the single parity check code is a code that uses a value calculated by XOR of bits constituting data as one check bit. That is, the single parity check code can detect an odd number of errors in the codeword.
  • the syndrome decoding unit 1214 sets an error occurrence flag of the channel when an error is detected. That is, when CODE_H is a single parity check code, a method similar to the correction method when CODE_H is a SEC-DED code can be applied.
  • the error check code encoding unit 713 does not need to collect check data for two cycles and collect one cycle. CODE_H code processing can be applied to one channel of data.
  • CODE_H may be, for example, a checksum or a cyclic redundancy check code (CRC).
  • CODE_V may be a code that can detect an error such as a memory chip, a memory unit corresponding to a channel, or a bank unit.
  • CODE_V may be, for example, a SEC-DED-SbED code (b is an arbitrary positive integer).
  • the SEC-DED-SbED code is a code that has the function of the SEC-DED code and can detect a one-byte error when the byte length is b bits.
  • FIG. 19 shows a second example of the byte division format of the channel.
  • B0 to B3 are 28 bits of data and 2 bits of check bits
  • B4 is 28 bits of data bits and 2 bits of check bits
  • C0 is a check bit of 5 bits of CODE_H.
  • 1 check bit Note that as the byte length b in the SEC-DED-SbED code is shorter, the error detection and correction capability in the entire memory chip is improved, and the scale of the encoding and decoding circuits is reduced.
  • FIG. 20 shows an example of a channel configuration in which two channels are arranged in each memory chip.
  • Channel 0 (130) and channel 1 (131) are arranged in the memory chip 0 (110).
  • a failure occurs in the entire memory chip 0 (110) such as a power supply or a clock, two channels fail.
  • FIG. 21 shows an example of code application in a memory chip in which two channels are arranged.
  • the product code of CODE_H and CODE_V is applied to the four stacked memories 0 to 3 (100 to 103).
  • a method is conceivable in which an output byte from each memory chip included in CODE_V is 1 byte.
  • CODE_V is applied to data in memory units corresponding to CH_0, CH_2, CH_4,..., CH_30.
  • CODE_V is applied to each byte set obtained by dividing the channel in FIG.
  • CODE_H is applied to 2-cycle data in the memory unit corresponding to the same channel. If CODE_V and CODE_H are configured as shown in FIG. 21, the number of stacked memories required to apply CODE_V and CODE_H is increased, but the memory access granularity is the same as the code illustrated in FIG.
  • FIG. 22 shows an example of code application in a stacked memory including a four-layer memory chip in which two channels are arranged.
  • CODE_H and CODE_V are applied to the stacked memory 0 (100) and the stacked memory 1 (101).
  • CODE_V is applied to data in memory units corresponding to CH_0, CH_2,..., CH_14, CH_1, CH_3,.
  • CODE_H is applied to two cycles of data in the memory unit corresponding to the same channel.
  • a memory unit including bytes encoded by CODE_V includes memory units corresponding to all channels configured in the same memory chip.
  • the failure of the memory chip does not cover the entire memory chip such as the power supply and the clock, but is limited to one channel in the memory chip, for example, the failure of the address decoder. With respect to error control for failure, the method of this embodiment is applicable.
  • FIG. 23 shows an example of code application assuming that a permanent failure of a memory chip occurs in a specific bank in a channel. For example, a sense amplifier failure in the bank is applicable in this case.
  • the same method can be configured by applying the configuration applied to the channel in this embodiment to the bank. That is, when the channel is composed of 8 banks, the same method can be realized by applying the code CODE_V to, for example, a data set obtained from 16 banks of 2 channels as shown in FIG. That is, CODE_V is applied with each bank as a memory unit. At this time, CODE_H is applied to the data of the same channel and the same bank for two cycles.
  • the method of applying codes to the data collected in units of banks as shown in FIG. 23 can effectively utilize the channel level parallelism because it does not occupy the channels. It is. Therefore, the code application example shown in FIG. 23 is suitable for a system that requires channel level parallelism.
  • the memory controller 710 further includes a storage mechanism.
  • the storage mechanism may be included in the error check code decoding unit 715 or may be included in the read control unit 714, for example.
  • a read request by the processor 720 or the DMA control unit 730 is smaller than 4,096 bits.
  • the cache line size on many processors is 512 bits (64 bytes) or 1024 bits (128 bytes), so one memory access that occurs on a cache miss may be less than 4,096 bits .
  • the read control unit 714 once reads out 4,096-bit encoded data including, for example, 512-bit (or 1,024-bit) data requested by the processor 720.
  • the error check code decoding unit 715 performs a decoding process on the read data, and then the storage mechanism temporarily caches a portion that is not originally requested data.
  • the read control unit 714 When the read control unit 714 receives a read request from the processor 720 or the DMA control unit 730, the read control unit 714 first checks whether the requested data is stored in the cache. If the requested data is stored in the cache, the data is transmitted from the cache. In general, reading to a memory often has locality in terms of time and space, so that the cache memory holds data, thereby improving the performance at the time of reading.
  • the read control unit 714 needs to read the remaining bits constituting the code. For example, when the processor chip 700 does not have a cache and the last updated data is stored only in the stacked memory 100, the read control unit 714 reads out other part of the data from the stacked memory 100, and the error check code The encoding unit 713 applies a code together with the other parts.
  • the write control unit 712 may have a function of sending a read request to the read control unit 714 and may include a buffer that temporarily stores received data.
  • the write control unit 712 when the data update request source to the stacked memory 100 includes a cache, when the last updated data is stored in a memory other than the stacked memory 100, the write control unit 712 is updated last. It has a function of reading data from a memory including data, and after reading other data necessary for encoding from the memory, it is encoded together with the data.
  • writing to the memory has locality in time and space as well as reading.
  • the write control unit 712 does not immediately write data to the stacked memory 100 when a write request is accepted, but temporarily buffers the data, thereby improving the performance during writing.
  • the CODE_V decoding processing unit 1220 when the CODE_H decoding processing unit 1210 determines that the error cannot be corrected, the CODE_V decoding processing unit 1220 is identical in order to uniquely identify in which memory chip the error has occurred. The code was applied to the data for two cycles output from the memory chip.
  • FIG. 24 shows an example of code application using four stacked memories.
  • the data amount is expanded in the time direction in order to secure the check bits necessary for CODE_H, and the code is applied to the data for two cycles.
  • the error control system of this embodiment is the same as that of the first embodiment by extending the data amount in the spatial direction to the required number of check bits using a system in which stacked memories 0 to 3 (100 to 103) are mounted. Implement error control.
  • CODE_V is applied to a 16-channel data set output from two stacked memories, and the data is a combination of 16-channel channels combined with CODE_V and another stacked memory channel.
  • CODE_H is applied.
  • CODE_V is applied to 16 channels of the stacked memories 0 and 1 (100 and 101). Further, CODE_H is obtained for data combining the channels of the stacked memory 0 (100) and the stacked memory 2 (102) and data combining the channels of the stacked memory 1 (101) and the stacked memory 3 (103). Applies.
  • the error control method in this embodiment can perform error detection and error correction by the same flow as in the first embodiment.
  • CODE_V When CODE_V is applied to a memory unit corresponding to a channel as shown in FIGS. 21 and 22, a code can be applied to data of one cycle of four stacked memories in the same manner as in FIG. . Also, as shown in FIG. 23, when CODE_V is applied to a bank, a code can be applied to data in one cycle of four memory chips in the same manner as in FIG.
  • FIG. 25 shows a channel configuration example in the HMC.
  • channels 530 are distributed in a plurality of memory chips 510, and output bits from each memory chip 510 use the same TSV set in a time division manner.
  • an HMC in which four memory chips 510 are stacked outputs a total of 36 bits, 32 bits of data bits and 4 bits of check bits, from each memory chip 510, and includes 128 bits of data bits and 16 bits of check bits for the four layers.
  • FIG. 26 shows an example of an error pattern when a TSV failure occurs in the HMC.
  • the TSV connecting the memory chips 510 fails due to wear or the like.
  • the output bits from each memory chip 510 share the TSV, a plurality of bits passing through the faulty TSV may be erroneous.
  • the error check code encoding unit 713 and the error check code decoding unit 715 store data for each TSV that passes each bit. Rearranges.
  • FIG. 27 is an example showing error patterns before and after the rearrangement. By this rearrangement, the error check code encoding unit 713 can handle 4-bit errors that occur in a jump as a single 4-bit error.
  • the error check code encoding unit 713 uses, for example, a byte having a length of 4 to give a 16-bit check bit to 128-bit data, which is used for 4-bit byte error correction in a conventional x4 DIMM or the like.
  • an S4ED-D4ED Single 4-bit Error Detection-Double 4-bit Error Detection
  • the error control system can detect and correct a 4-bit error that occurs when one TSV failure occurs and can detect an 8-bit error that occurs when two TSV failures occur by performing the rearrangement in FIG. It becomes.
  • the error control system can apply the method not only to the TSV but also to the code for a lump of data that uses the same hardware resource in a time-sharing manner.
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of a certain embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of a certain embodiment.
  • each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files that realize each function can be stored in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
  • control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

This error correction device reads, from a memory device, first data which has been encoded by an encoding process using a product code including a code of a first type and a code of a second type, and in which the length of the data overlap between a codeword of the first type that has been encoded using the code of the first type and a codeword of the second type that has been encoded using the code of the second type is equal to or less than the byte length of the code of the second type. The error correction device then performs decoding on the first data using the code of the second type, and if an uncorrectable error is detected in a first codeword of the second type, the error correction device sets an error flag, performs decoding, using the code of the first type, on the first data on which the decoding using the code of the second type has been performed, and corrects an error in a first byte of the first codeword of the second type on the basis of the error flag using a first codeword of the first type that includes the first byte of the first codeword of the second type and that consists of a plurality of bytes, each stored in a different memory unit in the memory device.

Description

誤り訂正装置、誤り訂正方法、及び誤り訂正システムError correction apparatus, error correction method, and error correction system
 本発明は、誤り訂正装置、誤り訂正方法、及び誤り訂正システムに関する。 The present invention relates to an error correction device, an error correction method, and an error correction system.
 図1は、8層8チャネルの積層メモリの構成例を示す。近年、メモリバンド幅の更なる広帯域化を目的に、図1のように複数のメモリチップ110同士をTSV(シリコン貫通ビア)140などにより接続する積層メモリ100が普及し始めている。例えば、JEDECが仕様を定めるHBM(High Bandwidth Memory)や、HMCコンソーシアムが仕様を定めるHMC(Hybrid Memory Cube)は、従来のDDR3メモリよりも広帯域を実現可能な積層メモリとして普及が期待されている。 FIG. 1 shows a configuration example of an 8-layer 8-channel stacked memory. In recent years, for the purpose of further widening the memory bandwidth, a stacked memory 100 in which a plurality of memory chips 110 are connected to each other by a TSV (through silicon via) 140 as shown in FIG. For example, HBM (High Bandwidth Memory) whose specifications are specified by JEDEC and HMC (Hybrid Memory Cube) whose specifications are specified by the HMC Consortium are expected to be widely used as a stacked memory capable of realizing a wider band than a conventional DDR3 memory.
 積層メモリ100はメモリチップ110だけでなく、図1のようにさらに制御用チップ120を含んでもよい。積層メモリ100と外部とのインターフェースを、チャネル130と呼ぶ。積層メモリ100には複数のチャネル130を含む構成も可能であり、図1は、8つのメモリチップ110と1つの制御チップ120を含む積層メモリ100に、8つのチャネル130が搭載される例を示す。 The stacked memory 100 may include not only the memory chip 110 but also a control chip 120 as shown in FIG. An interface between the stacked memory 100 and the outside is called a channel 130. The stacked memory 100 may include a plurality of channels 130. FIG. 1 illustrates an example in which eight channels 130 are mounted on the stacked memory 100 including eight memory chips 110 and one control chip 120. .
 一方、HPC(High Performance Computing)分野やデータセンタなど、多数のメモリを搭載する大規模計算機システムでは、メモリの故障発生が無視できない頻度で発生するため、当該システムの高信頼性が要求される用途では、メモリの耐故障技術が必須となっている。 On the other hand, in large-scale computer systems equipped with a large number of memories, such as the High Performance Computing (HPC) field and data centers, memory failures occur at a frequency that cannot be ignored, so applications that require high reliability of the system Therefore, memory fault tolerance technology is essential.
 メモリの故障には、以下の2種類の故障が存在する。第1種の故障は、例えば中性子やα線がメモリチップに衝突および通過する事によりメモリ内のデータが一時的に破壊される過渡故障である。第2種の故障は、例えば回路の摩耗などによって回路が所望の機能を満たせなくなり、故障発生後は永続的にデータが壊され続ける永続故障である。過渡故障は、ソフトエラーとも呼ばれる。 There are the following two types of memory failures. The first type of failure is a transient failure in which data in the memory is temporarily destroyed when, for example, neutrons or α rays collide and pass through the memory chip. The second type of failure is a permanent failure in which the circuit cannot satisfy a desired function due to, for example, circuit wear or the like, and data is permanently destroyed after the failure occurs. Transient faults are also called soft errors.
 多くの場合において、ソフトエラーにより誤りとなるビットは1ビットである。そのため、データに対して冗長に検査用のビットを付与し、データ内の任意の1ビットエラーを検出および訂正する事が可能な誤り検出、訂正符号を用いたソフトエラー対策がこれまで行われてきた。誤り訂正符号と誤り検出符号とを併せて、誤り制御符号と呼ぶ。 In many cases, one bit is erroneous due to a soft error. For this reason, error detection and soft error countermeasures using correction codes that can detect and correct an arbitrary 1-bit error in data by redundantly adding check bits to data have been performed so far. It was. The error correction code and the error detection code are collectively referred to as an error control code.
 例えば、64ビットのデータに8ビットの検査ビットを付与することで、データおよび検査ビットの合計72ビット内の任意の1ビットで発生する誤りを検出および訂正し、同時に72ビット内の任意の2ビットで発生する誤りを検出することが可能な(72,64)1ビット誤り訂正-2ビット誤り検出符号(SEC-DED符号:Single Error Correction-Double Error Detection Code)が広く知られている。 For example, by adding an 8-bit check bit to 64-bit data, an error occurring in any 1 bit within the total 72 bits of the data and check bits is detected and corrected, and at the same time, any 2 in the 72 bits A 1-bit error correction-2 bit error detection code (SEC-DED code: Single Error Correction-Double Error Detection Code) capable of detecting an error occurring in a bit is widely known.
 図2は、HBMのチャネルフォーマットの例を示す。HBMの仕様では、メモリへのインターフェースであるチャネルは、128ビットのデータビット210に対して16ビットの検査ビット220が付与可能な構成となっている。図3は、HMCのチャネルフォーマットの例を示す。HMCは、32ビットのデータビット310と4ビットの検査ビット320との組を4組含み、合計128ビットのデータビットと合計16ビットの検査ビットとを組合せた構成となっている。よって、HBM、HMCの双方の例において、128ビットのデータビットと16ビットの検査ビットを、64ビットのデータと8ビットの検査ビットとの組が2組あると考えることで、ソフトエラーに関しては従来と同様の方式の適用が可能である。 FIG. 2 shows an example of the channel format of HBM. In the HBM specification, a channel that is an interface to a memory has a configuration in which a 16-bit check bit 220 can be added to a 128-bit data bit 210. FIG. 3 shows an example of an HMC channel format. The HMC includes four sets of 32-bit data bits 310 and 4-bit check bits 320, and has a configuration in which a total of 128-bit data bits and a total of 16-bit check bits are combined. Therefore, in both the HBM and HMC examples, 128 bits of data and 16 bits of check bits are considered as two sets of 64 bits of data and 8 bits of check bits. It is possible to apply a method similar to the conventional method.
 一方、永続故障はソフトエラーと異なり、多くの場合は複数のビットが同時に故障する。例えば、行アドレスデコーダの一部が故障した場合、当該故障した行へのメモリアクセスに対して読み書きされる一塊のデータが誤る可能性がある。そのため、永続故障対策技術として、一塊の複数ビットが同時に誤る場合にも、誤りの検出、訂正が可能なバイト誤り検出、訂正符号が用いられている。ここで、バイトとは、連続する複数のビットからなる単位であり、バイトを構成するビット数をバイト長と呼ぶ。 On the other hand, permanent failures are different from soft errors, and in many cases, multiple bits fail simultaneously. For example, when a part of the row address decoder fails, there is a possibility that a batch of data read / written for memory access to the failed row is erroneous. For this reason, byte error detection and correction codes capable of detecting and correcting errors are used as permanent failure countermeasure techniques even when a plurality of bits in a batch are erroneous at the same time. Here, the byte is a unit composed of a plurality of consecutive bits, and the number of bits constituting the byte is called a byte length.
 図4は、x4 DIMMの構成例を示す。例えば、DIMM400(Dual Inline Memory Module)は、図4のようにDIMM400に搭載される複数の各メモリチップ410からの出力ビットを組合せて、所望のデータ幅を構成する。しかし、行アドレスデコーダの故障や電源回路の故障などによりメモリチップ410全体にわたる影響の故障が発生した場合、当該の故障メモリチップから出力される複数のビットが故障する。 FIG. 4 shows a configuration example of x4 DIMM. For example, a DIMM 400 (Dual Inline Memory Module) combines output bits from a plurality of memory chips 410 mounted on the DIMM 400 as shown in FIG. 4 to form a desired data width. However, when a failure due to the influence of the entire memory chip 410 occurs due to a failure of the row address decoder, a failure of the power supply circuit, or the like, a plurality of bits output from the failed memory chip are failed.
 例えば、図4のように各メモリチップ410から4ビットを出力するDIMM400(x4-DIMM)は、16個のメモリチップ410からの出力ビットを纏めることで64ビットのデータを構成する。この場合、メモリチップ410の故障が発生すると、64ビットのデータのうち、当該故障メモリチップから出力される4ビットの塊が誤ることになる。 For example, as shown in FIG. 4, a DIMM 400 (x4-DIMM) that outputs 4 bits from each memory chip 410 constitutes 64-bit data by collecting output bits from 16 memory chips 410. In this case, when a failure occurs in the memory chip 410, a 4-bit block output from the failed memory chip out of 64-bit data is erroneous.
 よって、メモリチップ故障の永続故障に対してはこれらバイト誤りを検出、訂正可能なバイト誤り制御正符号が適用される。例えば、バイト長4の誤りにおいては、128ビットのデータに対して16ビットの検査ビットを付与することで、データと検査ビットの合計144ビット中の任意の1バイト誤りを訂正し、任意の2バイトの誤りを検出可能な1バイト誤り訂正-2バイト誤り検出符号(S4EC-D4ED符号:Single 4bit Error Correction - Double 4bit Error Detection Code)が知られている。 Therefore, a byte error control positive code capable of detecting and correcting these byte errors is applied to a permanent failure of a memory chip failure. For example, in the case of an error with a byte length of 4, an arbitrary 1-byte error in a total of 144 bits of data and check bits is corrected by adding a 16-bit check bit to 128-bit data. A 1-byte error correction code that can detect byte errors and a 2-byte error detection code (S4EC-D4ED code: Single 4-bit Error Correction-Double 4-bit Error Detection Code) are known.
 また、誤り制御符号として以下のものが知られている。特許文献1には、2つの符合を組合せて適用する事で、各符号をそれぞれ独立に適用する場合よりも誤り制御能力の高い符合を構成する、クロスインターリーブリードソロモン符号(CIRC)が記載されている。また、非特許文献1には、SEC-DED符合と同等の誤り制御能力を有し、かつ、バイト長bビットのバイト誤りを検出可能な、SEC-DED-SbED符合の具体的な構成方法が記載されている。 Further, the following are known as error control codes. Patent Document 1 describes a cross-interleaved Reed-Solomon code (CIRC) that forms a code having higher error control capability than a case where each code is applied independently by applying two codes in combination. Yes. Non-Patent Document 1 discloses a specific configuration method of the SEC-DED-SbED code that has an error control capability equivalent to that of the SEC-DED code and can detect a byte error having a byte length of b bits. Are listed.
米国特許第4413340号明細書U.S. Pat. No. 4,413,340
 例えば、HPC分野やデータセンタなどの高信頼用途分野で使用される積層メモリ100において、メモリユニット又はチャネルの永続故障対策を適用されることが望ましい。しかし、HBMやHMCなどの積層メモリ100は、TSV140により複数のメモリチップ110が積層したモジュールとして提供され、計算機システム設計者が別途検査ビットを出力するためのメモリチップを追加することはできない。 For example, in the stacked memory 100 used in the high-reliability application field such as the HPC field and the data center, it is desirable to apply the permanent failure countermeasure of the memory unit or channel. However, the stacked memory 100 such as an HBM or HMC is provided as a module in which a plurality of memory chips 110 are stacked by the TSV 140, and a computer chip for the computer system designer to separately output a test bit cannot be added.
 また、積層メモリ100とのインターフェースであるチャネル130内のデータビット及び検査ビットのビット幅は仕様により予め規定されており、計算機システム設計者はチャネル内の検査ビットを増やすことはできない。そのため、HBMやHMCなどの積層メモリ100において、メモリユニット又はチャネルの永続故障対策として誤り制御符号を適用する場合には、予め仕様で定められた検査ビット数で構成可能な符号しか適用することができない。 In addition, the bit widths of the data bits and check bits in the channel 130 that are interfaces with the stacked memory 100 are defined in advance by the specifications, and the computer system designer cannot increase the check bits in the channel. Therefore, when an error control code is applied as a countermeasure against a permanent failure of a memory unit or channel in a stacked memory 100 such as an HBM or an HMC, only codes that can be configured with the number of check bits determined in advance may be applied. Can not.
 一方、各チャネル130が各メモリチップ110に内蔵される場合、例えば、メモリユニットの一例であるメモリチップ110の永続故障発生時には、当該メモリチップ110に対応するチャネルから出力されるデータ128ビットと、検査ビット16ビットの合計144ビットの全てが故障となる。つまり、この場合、従来のDIMM400よりも長いバイト長の誤りを扱う必要がある。長いバイト長の誤り検出、制御にはより多くの検査ビットが必要となる。従って、従来のDIMMにおける永続故障対策技術、特許文献1に記載のクロスインターリーブリードソロモン符号、及び非特許文献1に記載のSEC-DED-SbED符合等を適用することはできない。 On the other hand, when each channel 130 is built in each memory chip 110, for example, when a permanent failure occurs in the memory chip 110 that is an example of the memory unit, 128 bits of data output from the channel corresponding to the memory chip 110, All of 144 bits in total including 16 check bits are faulty. That is, in this case, it is necessary to handle an error having a byte length longer than that of the conventional DIMM 400. More check bits are required for error detection and control of a long byte length. Therefore, it is impossible to apply the permanent failure countermeasure technique in the conventional DIMM, the cross interleaved Reed-Solomon code described in Patent Document 1, the SEC-DED-SbED code described in Non-Patent Document 1, and the like.
 以上のように、メモリ装置におけるメモリユニット又はチャネルの永続故障に対する耐故障技術実現には、以下の課題がある。第1の課題は各メモリユニットから出力されるデータビット、及び検査ビットのビット幅が予め決められており、従来のDIMM400のように新たにビットを追加することはできないことである。第2の課題は永続故障が発生した場合、誤るビット数が従来のDIMM400等と比較して大きいことである。 As described above, there are the following problems in realizing a fault-tolerant technique for a permanent failure of a memory unit or channel in a memory device. The first problem is that the bit widths of data bits and check bits output from each memory unit are determined in advance, and new bits cannot be added as in the conventional DIMM 400. The second problem is that when a permanent failure occurs, the number of erroneous bits is larger than that of the conventional DIMM 400 or the like.
 本案は以上の課題を鑑みて考案されたものであり、メモリ装置におけるメモリユニット、又はチャネルの永続故障により発生する誤りを検出、訂正するための構成、および方式を開示する。 This proposal was devised in view of the above problems, and discloses a configuration and method for detecting and correcting an error caused by a permanent failure of a memory unit or a channel in a memory device.
 上記課題を解決するために、本発明は、例えば、以下のような構成を採用する。メモリ装置からデータを読み出し、前記読み出したデータ内の誤りを訂正する、誤り訂正装置であって、前記メモリ装置は、第1種符号と第2種符号との積符号における符号処理により符号化された第1データを保持し、前記第1データにおいて、前記第1種符号により符号化された任意の第1種符号語と、前記第2種符号により符号化された任意の第2種符号語との重複するデータ長は前記第2種符号におけるバイト長以下であり、前記誤り訂正装置は、前記メモリ装置から、前記第1データを読み出す読出し制御部と、前記読み出した第1データに対して、前記第2種符号における復号処理を行う第2復号処理部と、前記第2復号処理部による復号処理が行われた第1データに対して、前記第1種符号における復号処理を行う第1復号処理部と、を含み、前記第2復号処理部は、前記メモリ装置から取得した第1の第2種符号語において訂正不能な誤りを検出した場合、前記第1の第2種符号語がエラーを含むことを示すエラーフラグをセットし、前記第1復号処理部は、前記第1の第2種符号語に含まれる第1のバイトを含み、前記メモリ装置内の異なるメモリユニットそれぞれに格納されるバイトからなる第1の第1種符号語において、前記エラーフラグに基づき前記第1のバイトにおけるエラーを訂正する、誤り訂正装置。 In order to solve the above problems, the present invention employs the following configuration, for example. An error correction device for reading data from a memory device and correcting an error in the read data, wherein the memory device is encoded by a code process in a product code of a first type code and a second type code In the first data, an arbitrary first type codeword encoded by the first type code and an arbitrary second type codeword encoded by the second type code. The data length that overlaps with the second type code is less than or equal to the byte length, and the error correction device reads the first data from the memory device and the read first data A first decoding unit that performs a decoding process on the second type code, and a first decoding unit that performs a decoding process on the first type code on the first data that has been decoded by the second decoding unit. Decryption process And when the second decoding processing unit detects an uncorrectable error in the first type 2 codeword acquired from the memory device, the first type 2 codeword generates an error. An error flag indicating inclusion is set, and the first decoding processing unit includes a first byte included in the first type 2 codeword and is stored in each of different memory units in the memory device. An error correction device for correcting an error in the first byte based on the error flag in a first type 1 codeword composed of bytes.
 本発明の一態様によれば、メモリ装置におけるメモリユニット又はチャネルの故障発生時に、故障箇所から出力される誤ったデータを高精度に検出することができる。ひいては、当該メモリ装置を含む情報処理装置で実行されるプログラムの出力が誤ることを高精度に検出することが可能となる。また、当該誤りを訂正することでプログラムの平均連続稼働時間を増大することが可能となる。 According to one aspect of the present invention, erroneous data output from a failure location can be detected with high accuracy when a memory unit or channel failure occurs in the memory device. As a result, it is possible to detect with high accuracy that the output of the program executed by the information processing apparatus including the memory device is incorrect. Moreover, it becomes possible to increase the average continuous operation time of the program by correcting the error.
8層8チャネルの積層メモリの構成例を示すブロック図である。It is a block diagram which shows the structural example of the laminated memory of 8 layers 8 channels. HBMのチャネルフォーマットの例を示す図である。It is a figure which shows the example of the channel format of HBM. HMCのチャネルフォーマットの例を示す図である。It is a figure which shows the example of the channel format of HMC. x4 DIMMの構成例を示す図である。It is a figure which shows the structural example of x4 DIMM. 実施例1において、誤り訂正システムの構成例を示すブロック図である。In Example 1, it is a block diagram which shows the structural example of an error correction system. 実施例1において、1チャネルが配置されるメモリチップの構成例を示すブロック図である。In Example 1, it is a block diagram which shows the structural example of the memory chip by which 1 channel is arrange | positioned. 実施例1において、誤り制御符号の一例を示す説明図である。In Example 1, it is explanatory drawing which shows an example of an error control code. 実施例1において、チャネルのバイト分割フォーマットの第1の例を示す図である。In Example 1, it is a figure which shows the 1st example of the byte division | segmentation format of a channel. 誤り制御符号の比較例を示す図である。It is a figure which shows the comparative example of an error control code. 実施例1において、誤り検査符号復号化部の構成例を示すブロック図である。In Example 1, it is a block diagram which shows the structural example of an error check code | cord decoding part. 実施例1において、CODE_H復号処理部の構成例を示すブロック図である。In Example 1, it is a block diagram which shows the structural example of a CODE_H decoding process part. 実施例1において、CODE_V復号処理部の構成例を示すブロック図である。In Example 1, it is a block diagram which shows the structural example of a CODE_V decoding process part. 実施例1において、復号処理の第1の例を示すフローチャートである。In Example 1, it is a flowchart which shows the 1st example of a decoding process. 実施例1において、復号処理の第2の一例を示すフローチャートである。In Example 1, it is a flowchart which shows the 2nd example of a decoding process. 実施例1において、積層メモリ内のメモリチップが故障した場合の、第1の誤りパタンの例を示す図である。In Example 1, it is a figure which shows the example of the 1st error pattern when the memory chip in a laminated memory fails. 実施例1において、積層メモリ内のメモリチップが故障した場合の、第2の誤りパタンの例を示す図である。In Example 1, it is a figure which shows the example of the 2nd error pattern when the memory chip in a laminated memory fails. 実施例1において、積層メモリ内のメモリチップが故障した場合の、第3の誤りパタンの例を示す図である。In Example 1, it is a figure which shows the example of the 3rd error pattern when the memory chip in a laminated memory fails. 実施例1において、同一チャネルから出力される2サイクルのデータにおける、誤りパタンの例を示す図である。In Example 1, it is a figure which shows the example of the error pattern in the data of 2 cycles output from the same channel. 実施例1において、チャネルのバイト分割フォーマットの第2の例を示す図である。In Example 1, it is a figure which shows the 2nd example of the byte division | segmentation format of a channel. 実施例1において、2チャネルが配置されたメモリチップの構成例を示すブロック図である。FIG. 3 is a block diagram illustrating a configuration example of a memory chip in which two channels are arranged in the first embodiment. 実施例1において、1メモリチップに2チャネルが配置された場合に適用される誤り制御符号の第1の例を示す図である。In Example 1, it is a figure which shows the 1st example of the error control code applied when 2 channels are arrange | positioned at 1 memory chip. 実施例1において、1メモリチップに2チャネルが配置された場合に適用される誤り制御符号の第2の例を示す図である。In Example 1, it is a figure which shows the 2nd example of the error control code applied when 2 channels are arrange | positioned at 1 memory chip. 実施例1において、バンク故障を想定する場合の誤り制御符号適用の例を示す図である。In Example 1, it is a figure which shows the example of application of an error control code when a bank failure is assumed. 実施例2において、4つの積層メモリを用いた誤り制御符号適用の例を示す図である。In Example 2, it is a figure which shows the example of an error control code application using four laminated memories. 実施例3において、HMCのチャネル構成例を示す図である。In Example 3, it is a figure which shows the channel structural example of HMC. 実施例3において、TSV故障によるエラーパタンの例を示す図である。In Example 3, it is a figure which shows the example of the error pattern by TSV failure. 実施例3において、TSV故障によってエラーとなるビットを特定バイトに固めるデータ並び替えの前後のエラーパタンの例を示す図である。In Example 3, it is a figure which shows the example of the error pattern before and behind the data rearrangement which fixes the bit which becomes an error by TSV failure to a specific byte.
 以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。 Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings. It should be noted that this embodiment is merely an example for realizing the present invention, and does not limit the technical scope of the present invention. In each figure, the same reference numerals are given to common configurations.
 図5は、本実施例の誤り制御システムの構成例を示す。誤り制御システムは、例えば、積層メモリ100と、積層メモリ100に接続されたプロセッサチップ700と、を含む。積層メモリ100は、メモリ装置の一例であり、例えば、図1と同様の構成である。プロセッサチップ700は、メモリコントローラ710、複数のプロセッサ720、及びDMA制御部730を含む。 FIG. 5 shows a configuration example of the error control system of this embodiment. For example, the error control system includes a stacked memory 100 and a processor chip 700 connected to the stacked memory 100. The stacked memory 100 is an example of a memory device, and has a configuration similar to that of FIG. The processor chip 700 includes a memory controller 710, a plurality of processors 720, and a DMA control unit 730.
 メモリコントローラ710は、データの誤り制御、及びプロセッサ720やDMA制御部730からのメモリへの読み書きの制御を行う。プロセッサ720は、プログラムに従って動作し、データの入力/出力、読み込み/書き込みを行い、さらに、後述する各プログラムを実行する。DMA制御部730は、DMA転送における通信の制御を行う。 The memory controller 710 performs data error control and read / write control to the memory from the processor 720 and the DMA control unit 730. The processor 720 operates in accordance with a program, inputs / outputs data, reads / writes data, and executes each program to be described later. The DMA control unit 730 controls communication in DMA transfer.
 メモリコントローラ710は、例えば、メモリインターフェース711、書込み制御部712、誤り検査符号符号化部713、読出し制御部714、及び誤り検査符号復号化部715を含む。メモリインターフェース711は、積層メモリ100からデータ等の入出力を行うインターフェースである。書込み制御部712/読出し制御部714は、プログラムであり、プロセッサ720やDMA制御部730からの積層メモリ100へのデータの書込み/読出しを制御する。 The memory controller 710 includes, for example, a memory interface 711, a write control unit 712, an error check code encoding unit 713, a read control unit 714, and an error check code decoding unit 715. The memory interface 711 is an interface that inputs and outputs data and the like from the stacked memory 100. The write control unit 712 / read control unit 714 is a program and controls writing / reading of data to / from the stacked memory 100 from the processor 720 and the DMA control unit 730.
 誤り検査符号符号化部713は、プログラムを含み、積層メモリ100に書き込まれるデータに対して符号化処理を行う。誤り検査符号復号化部715は、プログラムを含み、積層メモリ100から読み出されたデータに対して復号化処理を行い、誤り検出、及び誤り訂正を行う。本実施例の誤り制御システムは、図5の構成に限定されず、例えば、積層メモリ100内の制御チップ120に、メモリコントローラ710が構成されてもよい。 The error check code encoding unit 713 includes a program and performs an encoding process on data written to the stacked memory 100. The error check code decoding unit 715 includes a program, performs a decoding process on data read from the stacked memory 100, and performs error detection and error correction. The error control system of the present embodiment is not limited to the configuration of FIG. 5, for example, the memory controller 710 may be configured in the control chip 120 in the stacked memory 100.
 プログラムはプロセッサ720によって実行されることで、定められた処理を記憶装置及びメモリインターフェース711を用いながら行う。従って、本実施形態及び他の実施形態においてプログラムを主語とする説明は、プロセッサ720を主語とした説明でもよい。若しくは、プログラムが実行する処理は、そのプログラムが動作する計算機及び計算機システムが行う処理である。 The program is executed by the processor 720 to perform a predetermined process using the storage device and the memory interface 711. Therefore, in the present embodiment and other embodiments, the description with the program as the subject may be the description with the processor 720 as the subject. Alternatively, the process executed by the program is a process performed by a computer and a computer system on which the program operates.
 プロセッサ720は、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサ720は、書込み制御部712に従って動作することで書込み制御部として機能し、読出し制御部714に従って動作することで読出し制御部として機能する。他のプログラムについても同様である。さらに、プロセッサ720は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。 The processor 720 operates as a functional unit that realizes a predetermined function by operating according to a program. For example, the processor 720 functions as a write control unit by operating according to the write control unit 712, and functions as a read control unit by operating according to the read control unit 714. The same applies to other programs. Further, the processor 720 also operates as a functional unit that implements each of a plurality of processes executed by each program. A computer and a computer system are an apparatus and a system including these functional units.
 なお、プログラムの少なくとも一部は、専用ハードウェアによって実現されてもよい。プログラムは、プログラム配布サーバや、計算機読み取り可能な非一時的記憶媒体によって各計算機にインストールすることができ、各計算機の不揮発性記憶デバイスに格納することができる。 Note that at least a part of the program may be realized by dedicated hardware. The program can be installed in each computer by a program distribution server or a computer-readable non-transitory storage medium, and can be stored in a nonvolatile storage device of each computer.
 本実施例では、積層メモリ100へのインターフェースであるチャネルが、図2のように128ビットのデータと16ビットのデータから構成される場合を考える。図6は、1つのメモリチップに1チャネルが配置される場合の、チャネルの構成例を示す。積層メモリ100は、8層のメモリチップからなり、合計8チャネルを内蔵する。つまり、メモリチップとチャネルは1対1で対応する。 In this embodiment, a case is considered where a channel that is an interface to the stacked memory 100 is composed of 128-bit data and 16-bit data as shown in FIG. FIG. 6 shows a configuration example of channels when one channel is arranged in one memory chip. The stacked memory 100 is composed of eight layers of memory chips and incorporates a total of eight channels. That is, there is a one-to-one correspondence between memory chips and channels.
 図6において、メモリチップ1(111)が故障し、チャネル1(131)のアクセスの際に入出力される、データビット128ビットと検査ビット16ビットとの合計144ビットが、誤りとなる場合を考える。ここで誤りとは、メモリに読み書きされるデータが本来期待するデータとは異なる値になることを意味する。なお、128ビットのデータに対して16ビットの検査ビットを付加することで、144ビットの誤りを検出および訂正する誤り制御符号は知られていない。 In FIG. 6, the case where the memory chip 1 (111) fails and the total 144 bits of the data bits 128 bits and the check bits 16 bits input / output when accessing the channel 1 (131) becomes an error is shown. Think. Here, the error means that the data read / written to / from the memory has a value different from that originally expected. An error control code that detects and corrects a 144-bit error by adding a 16-bit check bit to 128-bit data is not known.
 図7は、本実施例において適用される誤り制御符号の一例を示す。図8は、チャネルのバイト分割フォーマットの第1の例を示す。本実施例が開示する方式は、図7のように複数の積層メモリから出力される、複数のチャネルを纏めて得られるデータセットに対して2つの誤り制御符号による積符号を適用する。 FIG. 7 shows an example of an error control code applied in this embodiment. FIG. 8 shows a first example of the byte division format of the channel. The system disclosed in the present embodiment applies a product code based on two error control codes to a data set obtained by collecting a plurality of channels, which is output from a plurality of stacked memories as shown in FIG.
 具体的には、誤り検査符号符号化部713は、まず各チャネルのデータビットと検査ビットとの合計144ビットを、例えば、図8のように複数のバイト(B0~B9、及びC0)に分割する。分割されたバイトの内、B0からB9までの10バイトそれぞれは、13ビット又は11ビットのデータビットを含み、合計128ビットのデータビットを含む。また、B0からB9までの各バイトは、1ビットの検査ビットを含む。誤り検査符号符号化部713は、この検査ビットを用いて第1の符号CODE_Vを構成する。 Specifically, the error check code encoding unit 713 first divides the total 144 bits of the data bits and check bits of each channel into, for example, a plurality of bytes (B0 to B9 and C0) as shown in FIG. To do. Of the divided bytes, 10 bytes from B0 to B9 each include 13 bits or 11 bits, and a total of 128 data bits. Each byte from B0 to B9 includes one check bit. The error check code encoding unit 713 configures the first code CODE_V using the check bits.
 また、各チャネルは、第2の符号CODE_Hにおける5ビットの検査ビットと、この5ビットの検査ビットに対して符号CODE_Vを適用するための検査ビット1ビットと、を含むバイトC0を含む。 Each channel includes a byte C0 including 5 check bits in the second code CODE_H and 1 check bit for applying the code CODE_V to the 5 check bits.
 誤り検査符号符号化部713は、例えば、2つの積層メモリ(積層メモリ0(100)、及び積層メモリ1(101))に含まれるCH0からCH15の合計16チャネルのうち、それぞれのチャネル内の分割したバイトを纏める。誤り検査符号符号化部713は、纏めたバイトの組それぞれに対して、第1の符号CODE_Vとして、例えば、SEC-DED-S14ED符号を適用する。 For example, the error check code encoding unit 713 divides each channel out of a total of 16 channels CH0 to CH15 included in two stacked memories (stacked memory 0 (100) and stacked memory 1 (101)). Put together the bytes. The error check code encoding unit 713 applies, for example, a SEC-DED-S14ED code as the first code CODE_V to each group of collected bytes.
 具体的には、誤り検査符号符号化部713は、チャネルCH0からチャネルCH15までの16のバイトB0を纏める。誤り検査符号符号化部713は、合計208ビット(=13bitx16ch)のデータビットと、合計16ビット(=1bitx16ch)の検査ビットと、に対して、例えば、非特許文献1で開示される(224,208)SEC-DED-S14ED符号を適用する。 Specifically, the error check code encoding unit 713 collects 16 bytes B0 from channel CH0 to channel CH15. The error check code encoding unit 713 is disclosed in Non-Patent Document 1, for example, with respect to a total of 208 bits (= 13 bits × 16 ch) of data bits and a total of 16 bits (= 1 bit × 16 ch) of check bits (224, 208) Apply the SEC-DED-S14ED code.
 誤り検査符号符号化部713は、B1~B9についても同様に(224,208)SEC-DED-S14ED符号を適用する。なお、B9は符号化対象のデータビットのビット長が13ではないため、誤り検査符号符号化部713は、B9に対して短縮符号を適用する。 The error check code encoding unit 713 similarly applies the (224, 208) SEC-DED-S14ED code to B1 to B9. Note that since the bit length of the data bit to be encoded is not 13 in B9, the error check code encoding unit 713 applies a shortened code to B9.
 つまり、誤り検査符号符号化部713は、積層メモリ0(100)及び積層メモリ1(101)におけるメモリユニットそれぞれに含まれるバイトに対して、CODE_Vを適用する。上述した例では、各メモリチップをメモリユニットとしている。 That is, the error check code encoding unit 713 applies CODE_V to the bytes included in each of the memory units in the stacked memory 0 (100) and the stacked memory 1 (101). In the example described above, each memory chip is a memory unit.
 また、誤り検査符号符号化部713は、2サイクル分(サイクル0、及びサイクル1)の1つのチャネルを纏める。誤り検査符号符号化部713は、C0の2サイクル分の検査ビットである合計10ビット(5ビットx2)の検査ビットと、B0~B9の2サイクル分のデータである合計276ビットのデータビットと、に対して、第2の符号CODE_Hを適用する。誤り検査符号符号化部713は、CODE_Hとして、例えば、(286,276)SEC-DED符号を適用する。 The error check code encoding unit 713 collects one channel for two cycles (cycle 0 and cycle 1). The error check code encoding unit 713 includes a check bit of 10 bits (5 bits × 2) in total that is a check bit for 2 cycles of C0, and a data bit of 276 bits in total that is data for 2 cycles of B0 to B9 , The second code CODE_H is applied. The error check code encoding unit 713 applies, for example, a (286,276) SEC-DED code as CODE_H.
 続いて、誤り検査符号符号化部713は、C0に対して、その他のバイトと同様に、CODE_Vの短縮符号を適用する。具体的には、誤り検査符号符号化部713は、CODE_Hにおける検査ビットである合計80ビット(=5ビットx16ch)をデータビット、CODE_Hの符号化対象外のビットである合計16ビット(=1ビットx16ch)を検査ビットとし、CODE_Vの短縮符号を適用する。 Subsequently, the error check code encoding unit 713 applies the CODE_V abbreviated code to C0 in the same manner as other bytes. Specifically, the error check code encoding unit 713 uses a total of 80 bits (= 5 bits × 16 ch) as check bits in CODE_H as data bits, and a total of 16 bits (= 1 bit as bits not to be encoded in CODE_H). x16ch) is used as a check bit, and a shortened code of CODE_V is applied.
 ここで、SEC-DED符号とは、符号語内の任意の1ビット誤りを訂正し、かつ任意の2ビットの誤りを検出することが可能な能力を持つ符号である。さらに、SEC-DED符号は、3ビット以上の誤りに関しても確率的に検出することが可能である。また、SEC-DED-S14ED符号とは、上述したSEC-DED符号と同等の能力に加え、バイト長が14ビットとした時に、符号語内の任意の1バイト誤りを検出可能な能力を持つ符号である。 Here, the SEC-DED code is a code having the ability to correct an arbitrary 1-bit error in a code word and detect an arbitrary 2-bit error. Furthermore, the SEC-DED code can be detected probabilistically even for errors of 3 bits or more. The SEC-DED-S14ED code is a code having the capability of detecting an arbitrary 1-byte error in a code word when the byte length is 14 bits in addition to the capability equivalent to the SEC-DED code described above. It is.
 図9は、1サイクルのデータに対して符号を適用する比較例を示す。図9の例は、CODE_Hを1サイクルの2チャネルのデータに対して適用している点において、図7の例と異なる。図9の例では、1つのCODE_Hによって符号化されるデータと、1つのCODE_Vによって符号化されるデータと、の重複部分が2バイト存在する。従って、CODE_Hによって訂正不能な誤りが検出された場合、CODE_Vは、どちらのチャネルで誤りが発生したのかを特定することができない。 FIG. 9 shows a comparative example in which a code is applied to one cycle of data. The example of FIG. 9 is different from the example of FIG. 7 in that CODE_H is applied to 2-channel data in one cycle. In the example of FIG. 9, there are two bytes of overlap between data encoded by one CODE_H and data encoded by one CODE_V. Therefore, when an uncorrectable error is detected by CODE_H, CODE_V cannot identify the channel in which the error has occurred.
 一方、図7の例では、CODE_HとしてSEC-DED符号を適用するための検査ビット数を確保するために、2チャネルのデータを纏めているが、図9のように単純に2つのチャネルのデータに対してCODE_Hを適用するのではなく、同一メモリチップから出力される2サイクルのデータに対してCODE_Hを適用する。本構成を採ることにより、CODE_Hによって符号化された任意の符号語と、CODE_Vによって符号化された任意の符号語と、の重複部分はCODE_Vにおけるバイト誤りの検出長(1バイト)以下となる。従って、CODE_Hによる訂正不能誤りが検出された場合、CODE_Vにおける復号によって当該誤りが発生したチャネルを一意に確定することができる。 On the other hand, in the example of FIG. 7, the data of two channels is collected in order to secure the number of check bits for applying the SEC-DED code as CODE_H. However, as shown in FIG. Instead of applying CODE_H to CODE_H, CODE_H is applied to two cycles of data output from the same memory chip. By adopting this configuration, an overlapping portion between an arbitrary codeword encoded by CODE_H and an arbitrary codeword encoded by CODE_V is equal to or less than the byte error detection length (1 byte) in CODE_V. Therefore, when an uncorrectable error due to CODE_H is detected, the channel in which the error has occurred can be uniquely determined by decoding in CODE_V.
 図10は、誤り検査符号復号化部715の構成例を示す。誤り検査符号復号化部715は、符号CODE_Hについての復号処理を行うCODE_H復号処理部1210、及び符号CODE_Vについての復号処理を行うCODE_V復号処理部1220を含む。 FIG. 10 shows a configuration example of the error check code decoding unit 715. The error check code decoding unit 715 includes a CODE_H decoding processing unit 1210 that performs a decoding process on the code CODE_H and a CODE_V decoding processing unit 1220 that performs a decoding process on the code CODE_V.
 積層メモリ100~101の各チャネルから出力される入力データは、まずCODE_H復号処理部1210に入力され、SEC-DED符号(CODE_H)の復号処理が行われる。図10に示すように、CODE_H復号処理部1210は、各チャネルから出力された入力データに対するCODE_Hの復号処理を並列に行ってもよい。 The input data output from each channel of the stacked memories 100 to 101 is first input to the CODE_H decoding processing unit 1210, where the SEC-DED code (CODE_H) is decoded. As illustrated in FIG. 10, the CODE_H decoding processing unit 1210 may perform CODE_H decoding processing on input data output from each channel in parallel.
 図11は、CODE_H復号処理部1210の構成例を示す。CODE_H復号処理部1210は、バッファ1211、並びにそれぞれプログラムである、シンドローム生成部1212、誤り訂正部1213、及びシンドローム復号部1214を含む。 FIG. 11 shows a configuration example of the CODE_H decoding processing unit 1210. The CODE_H decoding processing unit 1210 includes a buffer 1211 and a syndrome generation unit 1212, an error correction unit 1213, and a syndrome decoding unit 1214, which are programs.
 符号CODE_Hは同一チャネルから出力される2サイクル分のデータに対して適用されるため、バッファ1211は、1サイクル前のデータを保持する。なお、バッファ1211は、読出し制御部714に含まれていてもよい。シンドローム生成部1212は、積層メモリから出力された入力データに対して、CODE_Hにおけるシンドロームを生成する。なお、線形符号は、それぞれの符号を定める検査行列と呼ばれる行列を持ち、シンドロームは、検査行列と符号語との積として計算されるベクトル値である。 Since the code CODE_H is applied to data for two cycles output from the same channel, the buffer 1211 holds the data one cycle before. Note that the buffer 1211 may be included in the read control unit 714. The syndrome generation unit 1212 generates a syndrome in CODE_H for the input data output from the stacked memory. The linear code has a matrix called a check matrix that defines each code, and the syndrome is a vector value calculated as a product of the check matrix and the code word.
 シンドローム復号部1214は、シンドローム生成部1212が生成したシンドロームの値によりエラーの有無や、エラー発生場所を判定する。シンドローム復号部1214は、CODE_Hによる復号処理によって訂正不能なエラーが発生したと判定した場合、エラー発生フラグ信号をCODE_V復号処理部1220に送信する。誤り訂正部1213は、シンドローム復号部1214が発生場所を特定した誤りを訂正する。 The syndrome decoding unit 1214 determines the presence / absence of an error and the location where the error occurred based on the value of the syndrome generated by the syndrome generation unit 1212. The syndrome decoding unit 1214 transmits an error occurrence flag signal to the CODE_V decoding processing unit 1220 when it is determined that an uncorrectable error has occurred due to the decoding processing by CODE_H. The error correction unit 1213 corrects the error in which the syndrome decoding unit 1214 specifies the occurrence location.
 図12は、CODE_V復号処理部1220の構成例を示す。CODE_V復号処理部1220は、それぞれプログラムである、シンドローム生成部1221、誤り訂正部1222、シンドローム復号部1223、及びエラー発生フラグ検査部1224を含む。シンドローム生成部1221は、CODE_H復号処理部1210から出力された中間データに対して、CODE_Vにおけるシンドロームを生成する。 FIG. 12 shows a configuration example of the CODE_V decoding processing unit 1220. The CODE_V decoding processing unit 1220 includes a syndrome generation unit 1221, an error correction unit 1222, a syndrome decoding unit 1223, and an error occurrence flag check unit 1224 which are programs. The syndrome generation unit 1221 generates a syndrome in CODE_V for the intermediate data output from the CODE_H decoding processing unit 1210.
 シンドローム復号部1223は、シンドローム生成部1212が生成したシンドロームの値によりエラーの有無や、エラー発生場所を判定する。誤り訂正部1222は、シンドローム復号部1223が発生場所を特定した誤りを訂正する。エラー発生フラグ検査部1224は、CODE_H復号処理部1210から受信したエラー発生フラグ信号と、シンドローム復号部1223による判定結果と、を用いて、エラーの有無やエラー発生場所を判定する。 The syndrome decoding unit 1223 determines the presence / absence of an error and the location where the error occurred based on the value of the syndrome generated by the syndrome generation unit 1212. The error correction unit 1222 corrects the error whose location has been identified by the syndrome decoding unit 1223. The error occurrence flag checking unit 1224 uses the error occurrence flag signal received from the CODE_H decoding processing unit 1210 and the determination result by the syndrome decoding unit 1223 to determine the presence / absence of an error and the location where the error has occurred.
 以下、メモリから読み出したデータに対する復号処理、及びメモリチップ故障が発生した際に発生する144ビットの誤りを、図7に例示した符号を用いて検出し、訂正する方法を説明する。 Hereinafter, a decoding process for data read from the memory, and a method for detecting and correcting a 144-bit error that occurs when a memory chip failure occurs using the code illustrated in FIG. 7 will be described.
 本実施例の誤り制御システムは、符号CODE_VのS14ED能力により、積層メモリのメモリチップ故障時に発生する144ビットの誤りを100%検出する。各メモリチップから出力される144ビットは、図8に示すようにB0からC0までの11バイトに分割され、それぞれ異なるCODE_Vの符号語に分散される。B0からB9は14ビット、B9は12ビット、C0は6ビットから構成され、CODE_Vの各符号語は、各メモリチップにおけるB0からC0のデータを含む。よって、バイト長が14の1バイト誤りを検出可能なCODE_VのSEC-DED-S14ED符号により、メモリチップ故障発生時に生じる144ビットの誤りを検出することが可能となる。 The error control system of this embodiment detects 100% of 144-bit errors that occur when the memory chip of the stacked memory fails due to the S14ED capability of code CODE_V. The 144 bits output from each memory chip are divided into 11 bytes from B0 to C0 as shown in FIG. 8, and are distributed to different CODE_V codewords. B0 to B9 are composed of 14 bits, B9 is composed of 12 bits, and C0 is composed of 6 bits. Each codeword of CODE_V includes data of B0 to C0 in each memory chip. Therefore, the CODE-V SEC-DED-S14ED code capable of detecting a 1-byte error with a byte length of 14 makes it possible to detect a 144-bit error that occurs when a memory chip failure occurs.
 SEC-DED-S14ED符号は、バイト長14の1バイト誤りを検出可能であるが、その誤りを訂正することはできない。そのため、SEC-DED-S14ED符号単体ではメモリチップ故障時に発生する144ビットの誤りを訂正することはできない。 The SEC-DED-S14ED code can detect a 1-byte error with a byte length of 14 but cannot correct the error. For this reason, the SEC-DED-S14ED code alone cannot correct a 144-bit error that occurs when a memory chip fails.
 一方、SEC-DED-S14ED符号は、符号語を構成する複数のバイトのうち、どのバイトが誤りであるのかを別途知ることができれば、生成されたシンドロームに従ってバイト内の誤り位置を特定する、即ち当該バイト内の誤りを訂正することが可能である。 On the other hand, the SEC-DED-S14ED code specifies an error position in a byte according to the generated syndrome if it can separately know which byte is an error among a plurality of bytes constituting the code word. It is possible to correct an error in the byte.
 例えば、16チャネルのバイトB0を纏めてSEC-DED-S14ED符号を適用した時に、SEC-DED-S14ED符号は16バイトのB0の中のいずれか1つが誤った場合にそれを検出することができる。加えて、例えば、当該誤りがチャネル1のB0で発生していることが別途分かれば、SEC-DED-S14ED符号はチャネル1のB0内で発生した誤り位置を特定することが可能である。 For example, when the SEC-DED-S14ED code is applied to the 16-channel byte B0, the SEC-DED-S14ED code can detect if any one of the 16-byte B0 is wrong. . In addition, for example, if it is separately found that the error occurs in B0 of channel 1, the SEC-DED-S14ED code can specify the error position generated in B0 of channel 1.
 そこで、本実施例の誤り制御システムは、第2の符号であるCODE_Hの復号処理の結果設定され得る、エラー発生フラグを利用して、故障が発生したメモリチップを特定する。さらに、誤り制御システムは、各CODE_Vの符号語が含むメモリチップから出力されるバイトを、生成されたシンドロームに従い訂正する。 Therefore, the error control system according to the present embodiment uses the error occurrence flag that can be set as a result of the decoding process of CODE_H, which is the second code, to specify the memory chip in which the failure has occurred. Further, the error control system corrects the bytes output from the memory chip included in each CODE_V code word according to the generated syndrome.
 図13は、誤り検査符号復号化部715による復号処理の第1の例を示す。まずCODE_H復号処理部1210による復号処理に関して述べる。シンドローム生成部1212は、バッファ1211内に保持される積層メモリから受信した1サイクル目のデータと、積層メモリ100から受信した2サイクル目のデータと、を纏めた各チャネルにおける入力データからC0のCODE_Hによる符号化対象外である2ビット(1ビットx2)を除いたデータ、即ちCODE_Hにおける各符号語に対してCODE_Hにおけるシンドロームを生成する。シンドローム生成部1212は、生成したシンドロームをシンドローム復号部1214に送信する(S1101)。 FIG. 13 shows a first example of decoding processing by the error check code decoding unit 715. First, the decoding process by the CODE_H decoding processing unit 1210 will be described. The syndrome generation unit 1212 receives the CODE_H of C0 from the input data in each channel that combines the first cycle data received from the stacked memory held in the buffer 1211 and the second cycle data received from the stacked memory 100. A syndrome in CODE_H is generated for each codeword in CODE_H, that is, data excluding 2 bits (1 bit × 2) that are not to be encoded by. The syndrome generation unit 1212 transmits the generated syndrome to the syndrome decoding unit 1214 (S1101).
 シンドローム復号部1214は、受信したシンドロームの値によりエラーの有無や、当該チャネルにおける、エラー発生場所を判定し、判定結果を誤り訂正部1213に送信する(S1102)。SEC-DED符号において、シンドローム復号部1214は、シンドロームの値が0である場合に、符号語には誤りが無いと判定する。また、シンドロームの値が検査行列内の列ベクトルのいずれかの値と一致する場合、シンドローム復号部1214は、1ビット誤りが発生したと判定する。また、シンドロームの値が0ではなく、かつ、検査行列内のいずれの列ベクトルとも一致しない場合、シンドローム復号部1214は、訂正不能な2ビットの誤りが発生したと判定する。 The syndrome decoding unit 1214 determines the presence / absence of an error and the location where the error occurred in the channel based on the received syndrome value, and transmits the determination result to the error correction unit 1213 (S1102). In the SEC-DED code, the syndrome decoding unit 1214 determines that there is no error in the codeword when the value of the syndrome is 0. Further, when the syndrome value matches any value of the column vector in the parity check matrix, the syndrome decoding unit 1214 determines that a 1-bit error has occurred. If the syndrome value is not 0 and does not match any column vector in the parity check matrix, the syndrome decoding unit 1214 determines that an uncorrectable 2-bit error has occurred.
 ここで、SEC-DED符号は、3ビット以上の誤りを、確率的に検出することが可能である。つまり、3ビット以上の誤りに対しても、シンドロームが0でなく、かつ、検査行列のいずれの列ベクトルとも一致しないことが確率的に発生する。この場合、シンドローム復号部1214は、2ビットの誤りと同様に、訂正不能な誤りが発生したと判定する。 Here, the SEC-DED code can probabilistically detect an error of 3 bits or more. That is, even for an error of 3 bits or more, it is probable that the syndrome is not 0 and does not match any column vector of the check matrix. In this case, the syndrome decoding unit 1214 determines that an uncorrectable error has occurred, similarly to the 2-bit error.
 続いて、シンドローム復号部1214が誤りを検出しなかった場合(S1102:エラー無し)、後述するステップS1105に遷移する。また、このとき、誤り訂正部1213は、当該チャネルにおける入力データを訂正せず、そのまま当該チャネルにおける中間データとして、CODE_V復号処理部1220に送信する。 Subsequently, when the syndrome decoding unit 1214 does not detect an error (S1102: no error), the process proceeds to step S1105 described later. At this time, the error correction unit 1213 does not correct the input data in the channel, and transmits the data as it is to the CODE_V decoding processing unit 1220 as intermediate data in the channel.
 シンドローム復号部1214が1ビット誤りを検出した場合(S1102:1ビットエラー)、誤り訂正部1213は、当該1ビット誤りの訂正を行う。1ビット誤り訂正能力を有する符号の検査行列と1ビット誤りの符号語との積として算出されるシンドロームそれぞれは、全ての1ビット誤りのパタンに対して全てのシンドロームの値が異なる性質を満たす。よって、シンドローム復号部1214は、1ビット誤りについては、シンドロームの値によりエラー発生ビットの位置を一意に決定することができる。 When the syndrome decoding unit 1214 detects a 1-bit error (S1102: 1-bit error), the error correction unit 1213 corrects the 1-bit error. Each syndrome calculated as the product of a check matrix of a code having 1-bit error correction capability and a code word of 1-bit error satisfies the property that all syndrome values are different for all 1-bit error patterns. Accordingly, the syndrome decoding unit 1214 can uniquely determine the position of the error occurrence bit for the 1-bit error based on the syndrome value.
 従って、誤り訂正部1213は、当該チャネルにおける入力データの、一意に決定されたビット位置のビットを反転させることでデータを訂正する(S1103)。このとき、誤り訂正部1213は、当該訂正したデータを、当該チャネルにおける中間データとして、CODE_V復号処理部に送信する。 Therefore, the error correction unit 1213 corrects the data by inverting the bit at the uniquely determined bit position of the input data in the channel (S1103). At this time, the error correction unit 1213 transmits the corrected data to the CODE_V decoding processing unit as intermediate data in the channel.
 また、2ビット以上のエラーが発生した場合、シンドローム復号部1214は、シンドロームの値から誤っているビット位置を一意に特定することはできない。従って、誤り訂正部1213は誤りを訂正することができない。シンドローム復号部1214は2ビット以上の誤りを検出した場合(S1102:訂正不能エラー検出)、2ビット以上のエラーが当該チャネルで発生したことを示すエラー発生フラグをセットし、当該チャネルにおけるエラー発生フラグ信号をCODE_V復号処理部1220に送信する(S1104)。このとき、誤り訂正部1213は、当該チャネルにおける入力データを訂正せず、そのまま当該チャネルにおける中間データとして、CODE_V復号処理部1220に対して送信する。 When an error of 2 bits or more occurs, the syndrome decoding unit 1214 cannot uniquely identify an erroneous bit position from the syndrome value. Therefore, the error correction unit 1213 cannot correct the error. When the syndrome decoding unit 1214 detects an error of 2 bits or more (S1102: uncorrectable error detection), it sets an error occurrence flag indicating that an error of 2 bits or more has occurred in the channel, and the error occurrence flag in the channel The signal is transmitted to the CODE_V decoding processing unit 1220 (S1104). At this time, the error correction unit 1213 does not correct the input data in the channel but transmits the data as it is to the CODE_V decoding processing unit 1220 as intermediate data in the channel.
 CODE_H復号処理部1210は全てのチャネル、即ちCODE_Hにおける全ての符号語に対してステップS1101~ステップS1104における処理を行う。以上が、CODE_H復号処理部1210による復号処理である。次に、CODE_V復号処理部1220による復号処理に関して述べる。 The CODE_H decoding processing unit 1210 performs the processing in steps S1101 to S1104 for all codewords in all channels, that is, CODE_H. The above is the decoding processing by the CODE_H decoding processing unit 1210. Next, decryption processing by the CODE_V decryption processing unit 1220 will be described.
 符号CODE_Vは2つの積層メモリを纏めた16チャネルのデータに対して適用される。具体的には、シンドローム生成部1221は、CODE_H復号処理部1210から出力された、16チャネル分の中間データの各バイトを纏めたデータについて、CODE_Vにおけるシンドロームを生成する(S1105)。シンドローム生成部1221は、生成したシンドロームを、シンドローム復号部1223に送信する。 The code CODE_V is applied to 16 channels of data including two stacked memories. Specifically, the syndrome generation unit 1221 generates a syndrome in CODE_V for data obtained by collecting the bytes of intermediate data for 16 channels output from the CODE_H decoding processing unit 1210 (S1105). The syndrome generation unit 1221 transmits the generated syndrome to the syndrome decoding unit 1223.
 シンドローム復号部1223は、シンドローム復号部1223が生成したシンドロームを用いて、当該バイトにおける、誤り検出、及び訂正を行う(S1106)。このとき、エラー発生フラグ検査部1224はCODE_H復号処理部1210から受信したエラー発生フラグ信号に基づき、エラー発生フラグがセットされていることを検出する。 The syndrome decoding unit 1223 performs error detection and correction on the byte using the syndrome generated by the syndrome decoding unit 1223 (S1106). At this time, the error occurrence flag checking unit 1224 detects that the error occurrence flag is set based on the error occurrence flag signal received from the CODE_H decoding processing unit 1210.
 なお、シンドローム復号部1223は、SEC-DED-S14ED符号において、生成されたシンドロームに従い、SEC-DED符号を利用するシンドローム復号部1214と同様に、エラーの発生有無と、1ビットの誤り訂正、および2ビット誤りの検出を行う。加えて、シンドローム復号部1223は、SEC-DED-S14ED符号において、バイト長14のバイト誤りを検出することができる。 The syndrome decoding unit 1223, in the SEC-DED-S14ED code, according to the generated syndrome, similar to the syndrome decoding unit 1214 using the SEC-DED code, whether or not an error has occurred, 1-bit error correction, and 2-bit error detection is performed. In addition, the syndrome decoding unit 1223 can detect a byte error having a byte length of 14 in the SEC-DED-S14ED code.
 シンドローム復号部1223が、誤りを検出しなかった場合(S1106:エラー無し)、誤り検査符号復号化部715は、当該バイトを纏めたデータにおける復号処理を正常終了する(S1110)。 When the syndrome decoding unit 1223 does not detect an error (S1106: no error), the error check code decoding unit 715 normally ends the decoding process on the data in which the bytes are collected (S1110).
 シンドローム復号部1223が、1ビットの誤りを検出した場合(S1106:1ビットエラー)、誤り訂正部1222は、当該1ビット誤りの訂正を行う(S1107)。続いて、誤り検査符号復号化部715は、当該バイトを纏めたデータにおける復号処理を正常終了する(S1110)。 When the syndrome decoding unit 1223 detects a 1-bit error (S1106: 1-bit error), the error correction unit 1222 corrects the 1-bit error (S1107). Subsequently, the error check code decoding unit 715 normally ends the decoding process on the data in which the bytes are collected (S1110).
 シンドローム復号部1223が、バイトエラー又は2ビット以上の誤りを検出した場合(S1106:バイトエラー検出 or 2bit誤り検出)、エラー発生フラグ検査部1224は、シンドローム復号部1214から受信したエラー発生フラグ検出信号に基づき、セットされたエラー発生フラグが1箇所であるかをチェックする(S1108)。 When the syndrome decoding unit 1223 detects a byte error or an error of 2 bits or more (S1106: byte error detection or 2-bit error detection), the error occurrence flag checking unit 1224 receives the error occurrence flag detection signal received from the syndrome decoding unit 1214 Based on the above, it is checked whether the set error occurrence flag is one place (S1108).
 エラー発生フラグ検査部1224は、セットされたエラー発生フラグが1箇所であると判定した場合(S1108:YES)、当該エラー発生フラグがセットされたチャネルでバイト誤りが発生したと判断する。このとき、エラー発生フラグ検査部1224は、当該チャネルの情報を含むエラー発生チャネル信号を、誤り訂正部1222に送信する。誤り訂正部1222は、エラー発生チャネル信号が示すチャネルから出力されたバイトの値を、シンドロームの値に基づき訂正する(S1109)。続いて、誤り検査符号復号化部715は、復号処理を正常終了する(S1110)。 When the error occurrence flag checking unit 1224 determines that the set error occurrence flag is one (S1108: YES), it determines that a byte error has occurred in the channel in which the error occurrence flag is set. At this time, the error occurrence flag checking unit 1224 transmits an error occurrence channel signal including information on the channel to the error correction unit 1222. The error correction unit 1222 corrects the byte value output from the channel indicated by the error occurrence channel signal based on the syndrome value (S1109). Subsequently, the error check code decoding unit 715 normally ends the decoding process (S1110).
 エラー発生フラグ検査部1224が、セットされたエラー発生フラグが1箇所でないと判定した場合(S1108:No)、複数のチャネルにおいてエラーが発生している可能性がある。従って、エラー発生フラグ検査部1224は、どのチャネルが故障しているのかを一意に特定できないため、誤り訂正部1222は、誤りを訂正することはできない。この場合、エラー発生フラグ検査部1224は、訂正不能な誤りを検出したことを示す訂正不能誤り検出信号をセットし、当該バイトを纏めたデータにおけるエラー検出を終了する(S1111)。CODE_V復号処理部1220は、CODE_Vにおける全ての符号語に対してステップS1105~ステップS1111における処理を行う。以上が、CODE_V復号処理部1220による復号処理である。 When the error occurrence flag checking unit 1224 determines that the set error occurrence flag is not one place (S1108: No), there is a possibility that an error has occurred in a plurality of channels. Accordingly, the error occurrence flag checking unit 1224 cannot uniquely identify which channel is faulty, so the error correction unit 1222 cannot correct an error. In this case, the error occurrence flag checking unit 1224 sets an uncorrectable error detection signal indicating that an uncorrectable error has been detected, and ends error detection in the data in which the relevant byte is collected (S1111). The CODE_V decoding processing unit 1220 performs the processing in steps S1105 to S1111 for all codewords in CODE_V. The above is the decoding processing by the CODE_V decoding processing unit 1220.
 なお、SEC-DED符号は3ビット以上の誤りは確率的にしか検出することができないため、誤りが発生している場合であっても、CODE_H復号処理部1210が当該誤りを検出できないことがある。このとき、エラー発生フラグは設定されず、CODE_V復号処理部1220がバイト誤りを検出しても、当該誤りを訂正することはできない。このとき、ステップS1108において、エラー発生フラグ検査部1224は訂正不能誤り検出信号をセットすればよい。 Since the SEC-DED code can only detect an error of 3 bits or more probabilistically, the CODE_H decoding processing unit 1210 may not be able to detect the error even if an error has occurred. . At this time, no error occurrence flag is set, and even if the CODE_V decoding processing unit 1220 detects a byte error, the error cannot be corrected. At this time, in step S1108, the error occurrence flag checking unit 1224 may set an uncorrectable error detection signal.
 訂正不能誤り検出信号は、例えばメモリコントローラ710等に送られる。メモリコントローラ710は、例えば、訂正不能エラーが発生したこと表すレジスタに値を設定するなどにより、エラーの記録を残してもよい。オペレーティングシステムなどは、例えば、エラー記録を利用してシステムを再起動する、または当該メモリのアドレスをページ割当て対象から除外する、などの対策を行ってもよい。 The uncorrectable error detection signal is sent to the memory controller 710, for example. The memory controller 710 may leave a record of errors, for example, by setting a value in a register indicating that an uncorrectable error has occurred. For example, the operating system may take measures such as restarting the system using error recording or excluding the memory address from the page allocation target.
 また、エラー発生フラグ検査部1224は訂正不能エラーが発生したことだけでなく、訂正不能エラーが発生したアドレス情報などを併せて、例えばメモリコントローラ710等に対して通知してもよい。但し、これらの訂正不能エラーの発生を検出した場合の処理に関しては、個々のシステム設計によって決めることが可能であり、上述した処理に限定されない。 Further, the error occurrence flag checking unit 1224 may notify not only that an uncorrectable error has occurred but also the address information on which the uncorrectable error has occurred, for example, to the memory controller 710 or the like. However, the processing when the occurrence of these uncorrectable errors is detected can be determined by individual system design and is not limited to the processing described above.
 図14は、誤り検査符号復号化部715による復号処理の第2の例を示す。図14について図13との相違点のみ説明する。シンドローム復号部1223が、誤りを検出しなかった場合(S1106:エラー無し)、又はステップS1107において誤り訂正部1222が1ビット誤りを訂正した後、エラー発生フラグ検査部1224は、エラー発生フラグがセットされていないかをチェックする(S2812)。つまり、シンドローム復号部1223は、CODE_Vにおけるエラーが無いときに、ステップS2812におけるチェックを行う。 FIG. 14 shows a second example of the decoding process performed by the error check code decoding unit 715. Only the differences between FIG. 14 and FIG. 13 will be described. When the syndrome decoding unit 1223 does not detect an error (S1106: no error) or after the error correction unit 1222 corrects the 1-bit error in step S1107, the error occurrence flag checking unit 1224 sets the error occurrence flag. It is checked whether it has not been done (S2812). That is, the syndrome decoding unit 1223 performs a check in step S2812 when there is no error in CODE_V.
 エラー発生フラグがセットされていない場合(S2812:Yes)、誤り検査符号復号化部715は、当該バイトにおける復号処理を正常終了する(S1110)。エラー発生フラグがセットされている場合(S2812:No)、エラー発生フラグ検査部1224は、訂正不能な誤りを検出したことを示す訂正不能誤り検出信号をセットし、当該バイトを纏めたデータにおけるエラー検出を終了する(S1111)。 When the error occurrence flag is not set (S2812: Yes), the error check code decoding unit 715 normally ends the decoding process on the byte (S1110). When the error occurrence flag is set (S2812: No), the error occurrence flag checking unit 1224 sets an uncorrectable error detection signal indicating that an uncorrectable error is detected, and an error in the data in which the bytes are collected. The detection ends (S1111).
 ステップS2812の処理によれば、CODE_V復号処理部1220は、確率的にしか検出できない誤りを検出できなかった場合であっても、エラー発生フラグのセット状況に従って、誤りの発生を検出することができる。 According to the processing in step S2812, the CODE_V decoding processing unit 1220 can detect the occurrence of an error according to the setting state of the error occurrence flag even when an error that can be detected only probabilistically cannot be detected. .
 以下、積層メモリ内のメモリチップが故障した場合の誤り制御の具体例を説明する。図15は、積層メモリ内のメモリチップが故障した場合の誤りパタンの第1の例を示す。図15において、積層メモリ内のチャネル6(CH6)が実装されているメモリチップが故障し、チャネル6の全てのバイトが誤っている。このとき、ステップS1104において、シンドローム復号部1214は、チャネル6が誤りであることを示すエラー発生フラグ信号を、CODE_V復号処理部1220に送信する。 Hereinafter, a specific example of error control when a memory chip in the stacked memory fails will be described. FIG. 15 shows a first example of an error pattern when a memory chip in the stacked memory fails. In FIG. 15, the memory chip in which the channel 6 (CH6) in the stacked memory is mounted has failed, and all bytes of the channel 6 are incorrect. At this time, in step S1104, the syndrome decoding unit 1214 transmits an error occurrence flag signal indicating that the channel 6 is in error to the CODE_V decoding processing unit 1220.
 このとき、エラー発生フラグがセットされているのはチャネル6のみである。従って、ステップS1108において、エラー発生フラグ検査部1224は、バイト誤りの発生がチャネル6で発生したと判断し、エラー発生チャネル信号を誤り訂正部1222に送信する。ステップS1109において、誤り訂正部1222は、各データ内のエラー発生チャネル信号が示すチャネルから出力されたバイトの値を、シンドロームの値に基づき訂正する。 At this time, only the channel 6 has the error occurrence flag set. Accordingly, in step S1108, the error occurrence flag checking unit 1224 determines that a byte error has occurred in the channel 6, and transmits an error occurrence channel signal to the error correction unit 1222. In step S1109, the error correction unit 1222 corrects the byte value output from the channel indicated by the error occurrence channel signal in each data based on the syndrome value.
 例えば、図15のようにチップ故障が発生し、当該チップにおける全てのバイトが誤っている場合、当該故障チップは誤りを出力し続けるため、次回のメモリアクセス時にも確率的にバイト誤りが検出される。その際に、CODE_H復号処理部1210が再び当該バイト誤りを確率的に検出することは好ましくない。 For example, as shown in FIG. 15, when a chip failure occurs and all bytes in the chip are incorrect, the failed chip continues to output an error, so that a byte error is detected stochastically at the next memory access. The At this time, it is not preferable that the CODE_H decoding processing unit 1210 detects the byte error again stochastically.
 そこで、CODE_V復号処理部1220は、各チップが故障していることを表す情報を保持する記憶素子を含んでもよい。CODE_V復号処理部1220は、例えば、バイト誤り訂正時に当該チップが故障していることを示す値を当該記憶素子に書き込む。エラー発生フラグ検査部1224は、バイト誤り訂正後の2回目以降のバイト誤り検出時には、当該故障チップ情報とCODE_H復号処理部1210が出力するエラー発生フラグ信号とを併せて、エラー発生フラグの検査を行う。 Therefore, the CODE_V decoding processing unit 1220 may include a storage element that holds information indicating that each chip has failed. The CODE_V decoding processing unit 1220 writes, for example, a value indicating that the chip is defective at the time of byte error correction to the storage element. The error occurrence flag checking unit 1224 checks the error occurrence flag by combining the failure chip information and the error occurrence flag signal output by the CODE_H decoding processing unit 1210 when the second or subsequent byte error is detected after the byte error correction. Do.
 図16は、積層メモリ内のメモリチップが故障した場合の誤りパタンの第2の例を示す。複数のチャネルにおいてエラー発生フラグが設定されている場合、CODE_V復号処理部1220はエラー発生チップを一意に特定することができないため、メモリチップ故障により発生する誤りを訂正することはできない。図16において、チャネル6が実装されているメモリチップ6が故障しており、かつ同時に、チャネル2内のデータのうち2ビット以上(B1及びB5)が誤っている。 FIG. 16 shows a second example of an error pattern when a memory chip in the stacked memory fails. When the error occurrence flag is set in a plurality of channels, the CODE_V decoding processing unit 1220 cannot uniquely identify an error occurrence chip, and thus cannot correct an error caused by a memory chip failure. In FIG. 16, the memory chip 6 on which the channel 6 is mounted is faulty, and at the same time, two or more bits (B1 and B5) of the data in the channel 2 are incorrect.
 この場合、CODE_H復号処理部1210は、チャネル2とチャネル6のそれぞれにおいて2ビット以上の誤りを検出するため、チャネル2とチャネル6の2チャネルがエラーであることを示すエラー発生フラグを設定する。 In this case, since the CODE_H decoding processing unit 1210 detects an error of 2 bits or more in each of the channel 2 and the channel 6, it sets an error occurrence flag indicating that the two channels of the channel 2 and the channel 6 are errors.
 シンドローム復号部1223がCODE_Vの復号処理にて誤りを検出した場合に、エラー発生フラグ検査部1224は、チャネル2とチャネル6の2つがエラーの可能性があるため、どちらのチャネルが故障しているかを一意に特定できず、誤りを訂正することはできない。この場合、ステップS1111において、エラー発生フラグ検査部1224は訂正不能な誤りを検出したことを示す訂正不能誤り検出信号をセットする。 If the syndrome decoding unit 1223 detects an error in the CODE_V decoding process, the error occurrence flag checking unit 1224 may have an error in two of the channel 2 and the channel 6, so which channel is out of order. Cannot be uniquely identified and the error cannot be corrected. In this case, in step S1111, the error occurrence flag checking unit 1224 sets an uncorrectable error detection signal indicating that an uncorrectable error has been detected.
 図17は、積層メモリ内のメモリチップが故障した場合の誤りパタンの第3の例を示す。図17において、チャネル2及びチャネル6の、B1が誤っている。図17中のバツ印はバイト誤りを表す。このとき、CODE_H復号処理部1210が、チャネル2とチャネル6の少なくとも一方の誤りを、SEC-DED符号により検出し、エラーを検出したチャネルにエラー発生フラグをセットしたとする。このとき、B1には2バイトの誤りがあるため、CODE_V復号処理部1220は、SEC-DED-S14ED符号において、当該誤りを確率的にしか検出できない。従って、CODE_V復号処理部1220は、当該誤りを検出できない可能性がある。 FIG. 17 shows a third example of an error pattern when a memory chip in the stacked memory fails. In FIG. 17, B1 of channel 2 and channel 6 is incorrect. The crosses in FIG. 17 represent byte errors. At this time, it is assumed that the CODE_H decoding processing unit 1210 detects an error of at least one of the channel 2 and the channel 6 using the SEC-DED code and sets an error occurrence flag in the channel where the error is detected. At this time, since B1 has a 2-byte error, the CODE_V decoding processing unit 1220 can only detect the error in the SEC-DED-S14ED code only probabilistically. Therefore, the CODE_V decoding processing unit 1220 may not be able to detect the error.
 よって、シンドローム復号部1223が、誤りが無いと判定した(シンドロームが0)場合でも、エラー発生フラグ検査部1224が、エラー発生フラグを確認する、つまりステップS2812の処理を行うことで、より誤り検出能力を向上することができる。 Therefore, even when the syndrome decoding unit 1223 determines that there is no error (syndrome is 0), the error occurrence flag checking unit 1224 confirms the error occurrence flag, that is, the error detection is performed by performing the process of step S2812. Ability can be improved.
 本実施例の誤り制御システムは、符号CODE_Vによりバイト誤りを検出した際に、符号CODE_Hにより確率的にメモリチップ故障が発生したと思われるメモリチップを推定する事で、バイト誤りの検出、訂正を行うことができる。ひいては、本実施例の誤り制御システムは、メモリユニットの故障等による長いビットの誤りを検出、訂正することができる。 The error control system of the present embodiment detects and corrects a byte error by estimating a memory chip that is likely to have a memory chip failure with the code CODE_H when a byte error is detected with the code CODE_V. It can be carried out. As a result, the error control system of this embodiment can detect and correct a long bit error due to a failure of a memory unit or the like.
 また、本実施例の誤り制御システムは、任意のCODE_Hにおける符号語と、任意のCODE_Vにおける符号語と、の重複部分がCODE_Vにおけるバイト誤りの検出長以下となるよう構成された積符号を用いて誤り制御を行う。本実施例の誤り制御システムは、当該符号を用いて誤り制御を行うことにより、CODE_H復号処理部1210が訂正不能誤りを検出した場合、CODE_V復号処理部1220は、当該誤りが発生したチャネルを一意に確定することができる。 In addition, the error control system of the present embodiment uses a product code configured such that an overlapping part of a code word in an arbitrary CODE_H and a code word in an arbitrary CODE_V is equal to or less than the detection length of a byte error in CODE_V. Perform error control. In the error control system of the present embodiment, when the CODE_H decoding processing unit 1210 detects an uncorrectable error by performing error control using the code, the CODE_V decoding processing unit 1220 uniquely identifies the channel in which the error has occurred. Can be confirmed.
 図18は、同一チャネルから出力される2サイクルのデータにおける誤りパタンの例を示す。本実施例の誤り制御システムは、同一チャネルから出力される2サイクルのデータに対してCODE_Hを適用している。ここで、チャネル130内の特定のビットが永続的に誤る永続故障が発生する場合を考える。この場合、図18のようにチャネル130内のビット誤りが偶数個の場合(CASE1)、及び奇数個の場合(CASE2)のいずれにおいても、2サイクル分のデータにおけるビット誤りは偶数個である。 FIG. 18 shows an example of an error pattern in 2-cycle data output from the same channel. In the error control system of this embodiment, CODE_H is applied to 2-cycle data output from the same channel. Here, consider a case where a permanent failure occurs in which a specific bit in the channel 130 is permanently erroneous. In this case, as shown in FIG. 18, the number of bit errors in the data for two cycles is even when the number of bit errors in the channel 130 is an even number (CASE 1) and the case of an odd number (CASE 2).
 例えば、SEC-DED符号のうち、検査行列の列ベクトルの重みが全て奇数である奇数重みSEC-DED符号と呼ばれる符号は、データ内の偶数個の誤りを高確率で検出することが可能である。ここで、ベクトルの重みとはベクトルの非零の要素の数である。従って、本実施例のように、例えば、同一チャネルなど同一データパスを通るデータを偶数サイクル分纏めて符号を適用する場合、奇数重み符号を適用することにより、誤りを高確率で検出することができる。 For example, among the SEC-DED codes, a code called an odd-weighted SEC-DED code in which the weights of all the column vectors of the check matrix are odd numbers can detect an even number of errors in the data with high probability. . Here, the vector weight is the number of non-zero elements of the vector. Therefore, as in this embodiment, for example, when a code is applied to data that passes through the same data path such as the same channel for an even number of cycles, an error can be detected with high probability by applying an odd weight code. it can.
 また、ここまで、CODE_Hとして(286,276)SEC-DED符号、CODE_Vとして(224,208)SEC-DED-S14EDの符号を適用した例を示したが、本実施例の誤り制御システムは、他の符号を適用してもよい。以下、CODE_Hを別の符号とする例を説明する。 In addition, the example in which the code of (286,276) SEC-DED code is applied as CODE_H and the code of (224,208) SEC-DED-S14ED is applied as CODE_V has been shown so far. May be applied. Hereinafter, an example in which CODE_H is another code will be described.
 まず、CODE_Hは、誤り検出機能を有し、かつ、CODE_VがCODE_Hの検出結果を利用して、特定のメモリチップ(特定のチャネル)において当該誤りが発生していることを特定可能な符号であればよい。例えば、CODE_Hは、単一パリティ検査符号でもよい。このとき、誤り制御システムは、上述した方法と同様の誤り検出、訂正を行うことができる。単一パリティ検査符号とは、データを構成するビットのXORにより計算される値を1ビットの検査ビットとする符号である。つまり、単一パリティ検査符号は、符号語内の奇数個の誤りを検出することができる。 First, CODE_H has an error detection function, and CODE_V is a code that can specify that the error has occurred in a specific memory chip (specific channel) using the detection result of CODE_H. That's fine. For example, CODE_H may be a single parity check code. At this time, the error control system can perform error detection and correction similar to those described above. The single parity check code is a code that uses a value calculated by XOR of bits constituting data as one check bit. That is, the single parity check code can detect an odd number of errors in the codeword.
 CODE_Hが単一パリティ検査符号であるときも、CODE_HがSEC-DED符号であるときと同様に、シンドローム復号部1214は誤りを検出した場合、当該チャネルのエラー発生フラグをセットする。つまり、CODE_Hが単一パリティ検査符号であるときは、CODE_HがSEC-DED符号であるときの訂正方式と同様の方式を適用することができる。 When CODE_H is a single parity check code, as in the case where CODE_H is a SEC-DED code, the syndrome decoding unit 1214 sets an error occurrence flag of the channel when an error is detected. That is, when CODE_H is a single parity check code, a method similar to the correction method when CODE_H is a SEC-DED code can be applied.
 また、単一パリティ検査行列は、1ビットで検査ビットを生成することができるため、誤り検査符号符号化部713は、2サイクル分のデータを纏めて検査ビットを確保する必要はなく、1サイクルの1チャネルのデータに対して、CODE_Hの符号処理を適用することができる。 Also, since a single parity check matrix can generate check bits with one bit, the error check code encoding unit 713 does not need to collect check data for two cycles and collect one cycle. CODE_H code processing can be applied to one channel of data.
 CODE_Hとして単一パリティ符号を適用することで、2サイクル分ではなく1サイクル分のデータに対して符号を適用することができる。従って、メモリアクセス粒度が小さくなり、積層メモリの利便性が向上する。なお同様に、CODE_Hは、例えば、チェックサムや巡回冗長検査符号(CRC:Cyclic redundancy check code)であってもよい。 By applying a single parity code as CODE_H, a code can be applied to data for one cycle instead of two cycles. Therefore, the memory access granularity is reduced, and the convenience of the stacked memory is improved. Similarly, CODE_H may be, for example, a checksum or a cyclic redundancy check code (CRC).
 また、CODE_Vは、例えば、メモリチップ、チャネルに対応するメモリユニット、又はバンク単位等の誤りを検出することが可能な符号であればよい。CODE_Vは、例えば、SEC-DED-SbED符号(bは任意の正の整数)であってもよい。SEC-DED-SbED符号とはSEC-DED符号の機能を有し、かつ、バイト長がbビットである時に、1バイト誤りを検出可能な符号である。 CODE_V may be a code that can detect an error such as a memory chip, a memory unit corresponding to a channel, or a bank unit. CODE_V may be, for example, a SEC-DED-SbED code (b is an arbitrary positive integer). The SEC-DED-SbED code is a code that has the function of the SEC-DED code and can detect a one-byte error when the byte length is b bits.
 図19は、チャネルのバイト分割フォーマットの第2の例を示す。例えば、CODE_Vは、図19のようにb=30としたバイトを纏めたデータに適用されるSEC-DED-S30ED符号であってもよい。SEC-DED-S30ED符号において、B0からB3は28ビットのデータと2ビットの検査ビットとを、B4は28ビットのデータビットと2ビットの検査ビットとを、C0は5ビットのCODE_Hにおける検査ビットと1ビットの検査ビットとを、それぞれ含む。なお、SEC-DED-SbED符号におけるバイト長bが短い程、メモリチップ全体での誤り検出及び訂正能力は向上し、符号化及び復号化回路の規模は小さくなる。 FIG. 19 shows a second example of the byte division format of the channel. For example, CODE_V may be a SEC-DED-S30ED code applied to data in which bytes of b = 30 are collected as shown in FIG. In the SEC-DED-S30ED code, B0 to B3 are 28 bits of data and 2 bits of check bits, B4 is 28 bits of data bits and 2 bits of check bits, and C0 is a check bit of 5 bits of CODE_H. And 1 check bit. Note that as the byte length b in the SEC-DED-SbED code is shorter, the error detection and correction capability in the entire memory chip is improved, and the scale of the encoding and decoding circuits is reduced.
 ここまでは図6のように8層の積層メモリの各メモリチップに1チャネルが配置される例を示したが、以下では別のチャネル構成例における誤り制御方式を説明する。但し、同じI/F仕様に従うために、チャネル数は一定であるとする。容量を増加した積層メモリを構成するために、例えば、16層のメモリチップが積層される場合には本実施例を容易に適用することができる。一方、容量を減らすために4層積層となった場合を考える。 Up to this point, an example in which one channel is arranged in each memory chip of an 8-layer stacked memory as shown in FIG. 6 will be described below. However, in order to follow the same I / F specification, the number of channels is assumed to be constant. In order to configure a stacked memory with an increased capacity, for example, when 16 memory chips are stacked, this embodiment can be easily applied. On the other hand, a case where four layers are stacked in order to reduce the capacity is considered.
 図20は、各メモリチップに2チャネルが配置されるチャネルの構成例を示す。メモリチップ0(110)に、チャネル0(130)、及びチャネル1(131)が配置される。図20の構成の場合、例えば、電源やクロックなどのメモリチップ0(110)全体にわたる故障が発生した場合、2チャネルが故障することになる。 FIG. 20 shows an example of a channel configuration in which two channels are arranged in each memory chip. Channel 0 (130) and channel 1 (131) are arranged in the memory chip 0 (110). In the case of the configuration of FIG. 20, for example, when a failure occurs in the entire memory chip 0 (110) such as a power supply or a clock, two channels fail.
 図21は、2チャネルが配置されたメモリチップにおける符号適用の例を示す。図21においては、4つの積層メモリ0~3(100~103)に対して、CODE_HとCODE_Vとの積符号を適用する。例えば、図21のようにCODE_Vに含まれる各メモリチップからの出力バイトは1バイトとなるように構成する方法が考えられる。図21では、例えば、CH_0、CH_2、CH_4、...、CH_30に対応するメモリユニットにおけるデータに対してCODE_Vを適用する。ここで、CODE_Vは、図7と同様に、例えば、図8におけるチャネルをバイト分割した各バイトセットに対して適用される。 FIG. 21 shows an example of code application in a memory chip in which two channels are arranged. In FIG. 21, the product code of CODE_H and CODE_V is applied to the four stacked memories 0 to 3 (100 to 103). For example, as shown in FIG. 21, a method is conceivable in which an output byte from each memory chip included in CODE_V is 1 byte. In FIG. 21, for example, CODE_V is applied to data in memory units corresponding to CH_0, CH_2, CH_4,..., CH_30. Here, CODE_V is applied to each byte set obtained by dividing the channel in FIG.
 また、同一チャネルに対応するメモリユニットにおける2サイクルのデータに対して、CODE_Hが適用される。図21のようにCODE_V及びCODE_Hが構成されれば、CODE_V及びCODE_Hを適用するために必要となる積層メモリの数は増加するものの、メモリアクセス粒度は図7に例示した符号と同じである。 Also, CODE_H is applied to 2-cycle data in the memory unit corresponding to the same channel. If CODE_V and CODE_H are configured as shown in FIG. 21, the number of stacked memories required to apply CODE_V and CODE_H is increased, but the memory access granularity is the same as the code illustrated in FIG.
 図22は、2チャネルが配置された4層のメモリチップを含む積層メモリにおける符号適用の例を示す。図22においては、積層メモリ0(100)、及び積層メモリ1(101)に対してCODE_H及びCODE_Vが適用される。例えば、CH_0、CH_2、...、CH_14、CH_1、CH_3、・・・、CH15に対応するメモリユニットにおけるデータに対してCODE_Vが適用される。また、同一チャネルに対応するメモリユニットにおける2サイクルのデータに対して、CODE_Hが適用される。 FIG. 22 shows an example of code application in a stacked memory including a four-layer memory chip in which two channels are arranged. In FIG. 22, CODE_H and CODE_V are applied to the stacked memory 0 (100) and the stacked memory 1 (101). For example, CODE_V is applied to data in memory units corresponding to CH_0, CH_2,..., CH_14, CH_1, CH_3,. Also, CODE_H is applied to two cycles of data in the memory unit corresponding to the same channel.
 つまり、図22において、CODE_Vによって符号化されるバイトを含むメモリユニットは、同一メモリチップに構成される全てのチャネルに対応するメモリユニットを含む。図22のようにCODE_Vを構成することで、メモリチップの故障が、電源やクロックなどのメモリチップ全体にわたるものではなく、例えば、アドレスデコーダの故障など、メモリチップ内の1つのチャネルに限定される故障に対する誤り制御に関して、本実施例の方式が適用可能である。 That is, in FIG. 22, a memory unit including bytes encoded by CODE_V includes memory units corresponding to all channels configured in the same memory chip. By configuring CODE_V as shown in FIG. 22, the failure of the memory chip does not cover the entire memory chip such as the power supply and the clock, but is limited to one channel in the memory chip, for example, the failure of the address decoder. With respect to error control for failure, the method of this embodiment is applicable.
 ここまで、メモリチップが故障した際にチャネル単位の故障が発生する場合を想定し、16チャネルを纏めたデータセットに対して符号CODE_Vを適用する例を示した。図23は、メモリチップの永続故障が、チャネル内の特定のバンクに発生する場合を想定した符号適用の例を示す。例えば、バンク内のセンスアンプ故障などがこの場合に当てはまる。 Heretofore, an example in which the code CODE_V is applied to a data set in which 16 channels are combined has been shown assuming that a failure occurs in units of channels when a memory chip fails. FIG. 23 shows an example of code application assuming that a permanent failure of a memory chip occurs in a specific bank in a channel. For example, a sense amplifier failure in the bank is applicable in this case.
 この場合、本実施例でチャネルに対して適用した構成をバンクに適用することで同様の方式を構成可能である。つまり、チャネルが8バンクからなる場合には図23のように、例えば、2チャネルの16バンクから得られるデータセットに対して符号CODE_Vを適用することで同様の方式の実現が可能となる。つまり、各バンクをメモリユニットとして、CODE_Vが適用される。このとき、2サイクルの同一チャネル、かつ同一バンクのデータに対して、CODE_Hが適用される。 In this case, the same method can be configured by applying the configuration applied to the channel in this embodiment to the bank. That is, when the channel is composed of 8 banks, the same method can be realized by applying the code CODE_V to, for example, a data set obtained from 16 banks of 2 channels as shown in FIG. That is, CODE_V is applied with each bank as a memory unit. At this time, CODE_H is applied to the data of the same channel and the same bank for two cycles.
 図23のようなバンク単位で纏めたデータに対して符号を適用する方式は、図7などのチャネルを纏める方式とは異なり、チャネルを占有しないためチャネルレベル並列性を有効に活用することが可能である。従って、図23に示す符号適用例は、チャネルレベル並列性が必要なシステムに適する。 Unlike the method of grouping the channels in FIG. 7 and the like, the method of applying codes to the data collected in units of banks as shown in FIG. 23 can effectively utilize the channel level parallelism because it does not occupy the channels. It is. Therefore, the code application example shown in FIG. 23 is suitable for a system that requires channel level parallelism.
 本実施例の復号処理で述べた通り、図7の符号は128ビットのデータを含むチャネルを16チャネル×2サイクル纏めた4,096(=512バイト)ビットの一塊のデータセットに対して適用される。よって、メモリにデータを読み書きするプロセッサ720やDMA制御部730からのメモリアクセス粒度が、4,096ビットでない場合、例えばメモリコントローラ710は、記憶機構をさらに含む。なお当該記憶機構は、例えば、誤り検査符号復号化部715に含まれていてもよいし、読出し制御部714に含まれていてもよい。 As described in the decoding process of the present embodiment, the code of FIG. 7 is applied to a data set of 4,096 (= 512 bytes) bits which is a collection of 16 channels × 2 cycles including 128 bits of data. The Therefore, when the memory access granularity from the processor 720 or the DMA control unit 730 that reads / writes data from / to the memory is not 4,096 bits, for example, the memory controller 710 further includes a storage mechanism. The storage mechanism may be included in the error check code decoding unit 715 or may be included in the read control unit 714, for example.
 プロセッサ720又はDMA制御部730による読出し要求が4,096ビットよりも小さい場合を考える。例えば、多くのプロセッサにおけるキャッシュラインサイズは、512ビット(64バイト)または1024ビット(128バイト)であるため、キャッシュミス時に発生するメモリアクセス1つは4,096ビットよりも少なくなる可能性がある。 Consider a case where a read request by the processor 720 or the DMA control unit 730 is smaller than 4,096 bits. For example, the cache line size on many processors is 512 bits (64 bytes) or 1024 bits (128 bytes), so one memory access that occurs on a cache miss may be less than 4,096 bits .
 このとき、読出し制御部714は、例えば、プロセッサ720が要求する512ビット(又は1,024ビット)のデータを含む、4,096ビットの符号化されたデータを一旦読出す。誤り検査符号復号化部715は、読出されたデータに対して復号処理を行い、続いて、記憶機構は元来要求されたデータではない部分を一時的にキャッシュする。 At this time, the read control unit 714 once reads out 4,096-bit encoded data including, for example, 512-bit (or 1,024-bit) data requested by the processor 720. The error check code decoding unit 715 performs a decoding process on the read data, and then the storage mechanism temporarily caches a portion that is not originally requested data.
 読出し制御部714は、プロセッサ720、又はDMA制御部730からの読出し要求を受けた場合に、まず要求されたデータがキャッシュに保存されていないかを確認する。要求されたデータがキャッシュに保存されている場合には、キャッシュ内からデータを送信する。一般的に、メモリへの読出しは時間的、空間的に局所性を有する場合が多いため、キャッシュメモリがデータを保持することにより、読み出し時の性能が向上する。 When the read control unit 714 receives a read request from the processor 720 or the DMA control unit 730, the read control unit 714 first checks whether the requested data is stored in the cache. If the requested data is stored in the cache, the data is transmitted from the cache. In general, reading to a memory often has locality in terms of time and space, so that the cache memory holds data, thereby improving the performance at the time of reading.
 プロセッサ720又はDMA制御部730による書込み要求が、4,096ビットよりも少ない場合、読出し制御部714は符号を構成する残りのビットを読み出す必要がある。例えば、プロセッサチップ700がキャッシュを持たない場合、積層メモリ100にのみ最後に更新されたデータが格納されている場合、読出し制御部714は積層メモリ100から他の部分のデータを読み出し、誤り検査符号符号化部713は当該他の部分と併せて符号を適用する。 When the write request by the processor 720 or the DMA control unit 730 is less than 4,096 bits, the read control unit 714 needs to read the remaining bits constituting the code. For example, when the processor chip 700 does not have a cache and the last updated data is stored only in the stacked memory 100, the read control unit 714 reads out other part of the data from the stacked memory 100, and the error check code The encoding unit 713 applies a code together with the other parts.
 そのため、書込み制御部712は、読出し制御部714に読出し要求を送る機能を持ち、受信したデータを一時的に記憶するバッファを含んでもよい。また、例えば、積層メモリ100へのデータ書込み要求元がキャッシュを含む場合など、最後に更新されたデータが積層メモリ100以外に格納されている場合、書込み制御部712は、当該最後に更新されたデータを含むメモリからデータを読み出す機能を有し、当該のメモリから符号化に必要な他のデータを読み出した後に、それらのデータと併せて符号化する。 Therefore, the write control unit 712 may have a function of sending a read request to the read control unit 714 and may include a buffer that temporarily stores received data. In addition, for example, when the data update request source to the stacked memory 100 includes a cache, when the last updated data is stored in a memory other than the stacked memory 100, the write control unit 712 is updated last. It has a function of reading data from a memory including data, and after reading other data necessary for encoding from the memory, it is encoded together with the data.
 また、メモリへの書込みも読み出しと同様に時間的、空間的に局所性を持つ。これら局所性を利用するため、書込み制御部712は、書込み要求を受け付けた際に即座に積層メモリ100にデータを書き込むのではなく、一旦バッファすることにより、書込み時の性能が向上する。 Also, writing to the memory has locality in time and space as well as reading. In order to use these localities, the write control unit 712 does not immediately write data to the stacked memory 100 when a write request is accepted, but temporarily buffers the data, thereby improving the performance during writing.
 実施例1の誤り制御システムは、CODE_H復号処理部1210が、誤り訂正不能と判定した場合、CODE_V復号処理部1220が、当該誤りがどのメモリチップで発生したのかを一意に特定するために、同一メモリチップから出力される2サイクル分のデータに対して符号を適用した。 In the error control system of the first embodiment, when the CODE_H decoding processing unit 1210 determines that the error cannot be corrected, the CODE_V decoding processing unit 1220 is identical in order to uniquely identify in which memory chip the error has occurred. The code was applied to the data for two cycles output from the memory chip.
 このように、あるCODE_V符号が適用されたデータ中のバイトが、あるCODE_H符号が適用されたデータ中に1つになるように符号の組合せ方を工夫することで、CODE_Vのバイト誤り検出時に、CODE_Hの誤り検出情報を利用してバイト誤りの訂正を可能にした。本実施例の誤り制御システムは、4つの積層メモリを利用して同様の符号適用を実現する。 Thus, by devising how to combine the codes so that one byte in the data to which a certain CODE_V code is applied becomes one in the data to which a certain CODE_H code is applied, when a byte error of CODE_V is detected, Byte error correction was made possible by using error detection information of CODE_H. The error control system of the present embodiment implements the same code application using four stacked memories.
 図24は、4つの積層メモリを用いた符号適用の例を示す。実施例1の誤り制御システムはCODE_Hに必要な検査ビットを確保する為に時間方向にデータ量を拡張し、2サイクル分のデータに対して符号を適用した。本実施例の誤り制御システムは、積層メモリ0~3(100~103)を搭載するシステムを用いて、必要な検査ビット数を空間方向にデータ量を拡張することで、実施例1と同様の誤り制御を実現する。 FIG. 24 shows an example of code application using four stacked memories. In the error control system of the first embodiment, the data amount is expanded in the time direction in order to secure the check bits necessary for CODE_H, and the code is applied to the data for two cycles. The error control system of this embodiment is the same as that of the first embodiment by extending the data amount in the spatial direction to the required number of check bits using a system in which stacked memories 0 to 3 (100 to 103) are mounted. Implement error control.
 つまり、図24のように、2つの積層メモリから出力される16チャネルのデータセットに対してCODE_Vが適用され、CODE_Vで組合せた16チャネルのチャネルと別の積層メモリのチャネルとを組合せたデータに対してCODE_Hが適用される。 That is, as shown in FIG. 24, CODE_V is applied to a 16-channel data set output from two stacked memories, and the data is a combination of 16-channel channels combined with CODE_V and another stacked memory channel. On the other hand, CODE_H is applied.
 図24の例では、積層メモリ0、1(100、101)の16チャネルにCODE_Vが適用される。さらに、積層メモリ0(100)と積層メモリ2(102)の各チャネルとを組合せたデータ、及び積層メモリ1(101)と積層メモリ3(103)の各チャネルを組合せたデータに対して、CODE_Hが適用される。 24, CODE_V is applied to 16 channels of the stacked memories 0 and 1 (100 and 101). Further, CODE_H is obtained for data combining the channels of the stacked memory 0 (100) and the stacked memory 2 (102) and data combining the channels of the stacked memory 1 (101) and the stacked memory 3 (103). Applies.
 図24に例示した符号適用方法によれば、メモリチップ故障時にCODE_Hの復号にて訂正不能誤りが検出される際にセットされるエラー発生フラグが示すチャネルは、各CODE_Vの符号語内に一意に決定される。従って、本実施例における誤り制御方式は、実施例1と同様のフローにより誤り検出、及び誤り訂正を行うことができる。 According to the code application method illustrated in FIG. 24, the channel indicated by the error occurrence flag that is set when an uncorrectable error is detected in the decoding of CODE_H when a memory chip fails is uniquely specified in the codeword of each CODE_V. It is determined. Therefore, the error control method in this embodiment can perform error detection and error correction by the same flow as in the first embodiment.
 なお、図21、図22のようにチャネルに対応するメモリユニットにCODE_Vを適用する場合、4つの積層メモリの1サイクルのデータに対して、図24と同様の方法で符号を適用することができる。また、図23のように、バンクに対してCODE_Vを適用する場合についても4つのメモリチップの1サイクルのデータに対して、図24と同様の方法で符号を適用することができる。 When CODE_V is applied to a memory unit corresponding to a channel as shown in FIGS. 21 and 22, a code can be applied to data of one cycle of four stacked memories in the same manner as in FIG. . Also, as shown in FIG. 23, when CODE_V is applied to a bank, a code can be applied to data in one cycle of four memory chips in the same manner as in FIG.
 図25は、HMCにおけるチャネルの構成例を示す。HMCにおいては、複数のメモリチップ510にチャネル530が分散配置され、各メモリチップ510からの出力ビットは時分割で同一のTSVセットを利用する。例えば、4つのメモリチップ510を積層するHMCは、各メモリチップ510からデータビット32ビットと検査ビット4ビットとの合計36ビットを出力し、4層併せてデータビット128ビットと検査ビット16ビットとを構成する。 FIG. 25 shows a channel configuration example in the HMC. In the HMC, channels 530 are distributed in a plurality of memory chips 510, and output bits from each memory chip 510 use the same TSV set in a time division manner. For example, an HMC in which four memory chips 510 are stacked outputs a total of 36 bits, 32 bits of data bits and 4 bits of check bits, from each memory chip 510, and includes 128 bits of data bits and 16 bits of check bits for the four layers. Configure.
 図26は、HMCにおけるTSV故障発生時のエラーパタンの例を示す。ここで、メモリチップ510同士を接続するTSVが摩耗等により故障した場合を考える。この場合、各メモリチップ510からの出力ビットはTSVを共有しているため、当該故障TSVを経由する複数のビットが誤る可能性がある。 FIG. 26 shows an example of an error pattern when a TSV failure occurs in the HMC. Here, consider a case where the TSV connecting the memory chips 510 fails due to wear or the like. In this case, since the output bits from each memory chip 510 share the TSV, a plurality of bits passing through the faulty TSV may be erroneous.
 単純に各メモリチップ510の36ビットを順に並べると、図27のように144ビットの中に4ビットの誤りが、飛び飛びに発生する。これら4ビットの誤りは、一塊の誤りとみなされない。従って、従来のx4 DIMMなどで利用される128ビットのデータビットに対する16ビットの検査ビットにより一塊の4ビットの誤りを検出、訂正するS4ED-D4ED符号を適用しても、当該誤りを検出、訂正することはできない。 If the 36 bits of each memory chip 510 are simply arranged in order, a 4-bit error will occur in 144 bits as shown in FIG. These 4-bit errors are not considered a batch of errors. Therefore, even if an S4ED-D4ED code that detects and corrects a group of 4-bit errors using 16-bit check bits for 128-bit data bits used in conventional x4 DIMMs, the error is detected and corrected. I can't do it.
 そこで、本実施例では、出力されるメモリチップ510毎にデータを並べるのではなく、誤り検査符号符号化部713、および誤り検査符号復号化部715が、各ビットを通過するTSV毎にデータを並び替える。図27は、当該並び替え前後のエラーパタンを示す例である。当該並び替えによって、誤り検査符号符号化部713は、飛び飛びに発生した4ビットの誤りを、一塊の4ビットの誤りとして扱う事ができる。 Therefore, in this embodiment, instead of arranging data for each memory chip 510 to be output, the error check code encoding unit 713 and the error check code decoding unit 715 store data for each TSV that passes each bit. Rearranges. FIG. 27 is an example showing error patterns before and after the rearrangement. By this rearrangement, the error check code encoding unit 713 can handle 4-bit errors that occur in a jump as a single 4-bit error.
 このとき、誤り検査符号符号化部713は、例えば、従来のx4 DIMMなどにおいて4ビットのバイト誤り訂正に用いられる、128ビットのデータに対して16ビットの検査ビットを付与するバイト長4のバイト誤り訂正符号を適用することで、S4ED-D4ED(Singl 4bit Error Detection - Double 4bit Error Detection)符号を適用することができる。 At this time, the error check code encoding unit 713 uses, for example, a byte having a length of 4 to give a 16-bit check bit to 128-bit data, which is used for 4-bit byte error correction in a conventional x4 DIMM or the like. By applying the error correction code, an S4ED-D4ED (Single 4-bit Error Detection-Double 4-bit Error Detection) code can be applied.
 つまり、この方法を適用することにより、図25のようにTSVを時分割共有する一塊のデータに対して符号を適用する場合にバイト誤り検出を行う制御符号の適用が可能となる。従って、誤り制御システムは、図27における並び替えを行うことにより、1つのTSV故障時に発生する4ビット誤りの検出、訂正、及び2つのTSV故障時に発生する8ビット誤りの検出を行うことが可能となる。誤り制御システムは、TSVだけでなく、同一のハードウェア資源を時分割利用する一塊のデータに対して符号を適用する場合一般において、当該方法を適用可能である。 That is, by applying this method, it is possible to apply a control code that performs byte error detection when a code is applied to a lump of data that shares time-sharing TSVs as shown in FIG. Therefore, the error control system can detect and correct a 4-bit error that occurs when one TSV failure occurs and can detect an 8-bit error that occurs when two TSV failures occur by performing the rearrangement in FIG. It becomes. In general, the error control system can apply the method not only to the TSV but also to the code for a lump of data that uses the same hardware resource in a time-sharing manner.
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。 In addition, this invention is not limited to the above-mentioned Example, Various modifications are included. For example, the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described. Further, a part of the configuration of a certain embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of a certain embodiment. Further, it is possible to add, delete, and replace other configurations for a part of the configuration of each embodiment.
 また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。 In addition, each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor. Information such as programs, tables, and files that realize each function can be stored in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。 Also, the control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

Claims (15)

  1.  メモリ装置からデータを読み出し、前記読み出したデータ内の誤りを訂正する、誤り訂正装置であって、
     前記メモリ装置は、第1種符号と第2種符号との積符号における符号処理により符号化された第1データを保持し、
     前記第1データにおいて、前記第1種符号により符号化された任意の第1種符号語と、前記第2種符号により符号化された任意の第2種符号語との重複するデータ長は前記第2種符号におけるバイト長以下であり、
     前記誤り訂正装置は、
     前記メモリ装置から、前記第1データを読み出す読出し制御部と、
     前記読み出した第1データに対して、前記第2種符号における復号処理を行う第2復号処理部と、
     前記第2復号処理部による復号処理が行われた第1データに対して、前記第1種符号における復号処理を行う第1復号処理部と、を含み、
     前記第2復号処理部は、前記メモリ装置から取得した第1の第2種符号語において訂正不能な誤りを検出した場合、前記第1の第2種符号語がエラーを含むことを示すエラーフラグをセットし、
     前記第1復号処理部は、前記第1の第2種符号語に含まれる第1のバイトを含み、前記メモリ装置内の異なるメモリユニットそれぞれに格納されるバイトからなる第1の第1種符号語において、前記エラーフラグに基づき前記第1のバイトにおけるエラーを訂正する、誤り訂正装置。
    An error correction device that reads data from a memory device and corrects an error in the read data,
    The memory device holds first data encoded by a code process in a product code of a first type code and a second type code,
    In the first data, an overlapping data length of an arbitrary first type codeword encoded by the first type code and an arbitrary second type codeword encoded by the second type code is Is less than or equal to the byte length in the type 2 code,
    The error correction device includes:
    A read control unit for reading the first data from the memory device;
    A second decoding processing unit for performing decoding processing in the second type code on the read first data;
    A first decoding processor that performs a decoding process on the first type code for the first data that has been decoded by the second decoding processor;
    When the second decoding processing unit detects an uncorrectable error in the first type 2 codeword acquired from the memory device, the error flag indicates that the first type 2 codeword includes an error. Set
    The first decoding processing unit includes a first first type code including a first byte included in the first second type code word and including bytes stored in different memory units in the memory device. An error correction device for correcting an error in the first byte based on the error flag in a word.
  2.  請求項1に記載の誤り訂正装置であって、
     前記メモリ装置は、前記メモリユニットとして、複数のメモリチップをさらに含み、
     前記第1種符号語は、前記複数のメモリチップそれぞれに格納されるバイトを含み、
     前記第2種符号語は、1つのメモリチップの複数サイクルのデータを含む、誤り訂正装置。
    The error correction device according to claim 1,
    The memory device further includes a plurality of memory chips as the memory unit,
    The first type code word includes bytes stored in each of the plurality of memory chips,
    The error correction apparatus, wherein the second type code word includes data of a plurality of cycles of one memory chip.
  3.  請求項1に記載の誤り訂正装置であって、
     前記メモリ装置は、前記メモリユニットにおけるデータを入出力するための複数のチャネルをさらに含み、
     前記第1種符号語は、前記複数のチャネルそれぞれにおいて入出力されるバイトを含み、
     前記第2種符号語は、1つのチャネルに対応するメモリユニットの複数サイクルのデータを含む、誤り訂正装置。
    The error correction device according to claim 1,
    The memory device further includes a plurality of channels for inputting and outputting data in the memory unit,
    The first type codeword includes bytes input / output in each of the plurality of channels,
    The error correction apparatus, wherein the second type codeword includes data of a plurality of cycles of a memory unit corresponding to one channel.
  4.  請求項1に記載の誤り訂正装置であって、
     前記メモリ装置は、前記メモリユニットとして、複数のバンクをさらに含み、
     前記第1種符号語は、前記複数のバンクそれぞれに格納されるバイトを含み、
     前記第2種符号語は、1つのバンクの複数サイクルのデータを含む、誤り訂正装置。
    The error correction device according to claim 1,
    The memory device further includes a plurality of banks as the memory unit,
    The first type codeword includes bytes stored in each of the plurality of banks,
    The second type code word is an error correction device including data of a plurality of cycles in one bank.
  5.  請求項1から4のいずれか1つに記載の誤り訂正装置であって、
     前記第1種符号は、ビット誤り検出能力を有し、
     前記第2種符号は、バイト誤り検出能力を有する、誤り訂正装置。
    The error correction device according to any one of claims 1 to 4,
    The first type code has a bit error detection capability;
    The second type code is an error correction device having byte error detection capability.
  6.  請求項5に記載の誤り訂正装置であって、
     前記第1種符号は、SEC-DED-SbED符号(bは正の整数)であり、
     前記第2種符号は、SEC-DED符号である、誤り訂正装置。
    The error correction device according to claim 5,
    The first type code is a SEC-DED-SbED code (b is a positive integer),
    The error correction apparatus, wherein the second type code is a SEC-DED code.
  7.  請求項2から4のいずれか1つに記載の誤り訂正装置であって、
     前記複数サイクルは、偶数サイクルであり、
     前記第2種符号は、奇数重み符号である、誤り訂正装置。
    The error correction device according to any one of claims 2 to 4,
    The plurality of cycles are even cycles;
    The error correction apparatus, wherein the second type code is an odd weight code.
  8.  請求項1に記載の誤り訂正装置であって、
     前記メモリ装置は、複数のメモリチップ群をさらに含み、
     前記第1種符号語は、1つのメモリチップ群に含まれるメモリチップそれぞれに格納されるバイトを含み、
     前記第2種符号語は、異なるメモリチップ群に含まれるメモリチップのデータを含み、
     前記メモリユニットは、前記1つのメモリチップ群に含まれるメモリチップそれぞれである、誤り訂正装置。
    The error correction device according to claim 1,
    The memory device further includes a plurality of memory chip groups,
    The first type code word includes bytes stored in each memory chip included in one memory chip group,
    The second type code word includes data of memory chips included in different memory chip groups,
    The error correction apparatus, wherein the memory unit is a memory chip included in the one memory chip group.
  9.  請求項1に記載の誤り訂正装置であって、
     前記第1復号処理部は、前記第1の第1種符号語内に前記第1種符号におけるエラーが無く、かつ前記エラーフラグがセットされていると判定した場合、前記第1の第1種符号語に訂正不能エラーが存在すると判定する、誤り訂正装置。
    The error correction device according to claim 1,
    When the first decoding processing unit determines that there is no error in the first type code in the first first type codeword and the error flag is set, the first first type codeword An error correction device that determines that an uncorrectable error exists in a codeword.
  10.  請求項1に記載の誤り訂正装置であって、
     前記読出し制御部が前記第1データの一部についての読出し要求を受信した場合、前記第1復号処理部及び前記第2復号処理部による復号処理が行われた第1データをキャッシュし、
     前記読出し制御部は、前記第1データの別の一部についての読出し要求に対して、前記キャッシュした第1データを読出す、誤り訂正装置。
    The error correction device according to claim 1,
    When the read control unit receives a read request for a part of the first data, the first data subjected to the decoding processing by the first decoding processing unit and the second decoding processing unit is cached,
    The error correction apparatus, wherein the read control unit reads the cached first data in response to a read request for another part of the first data.
  11.  メモリ装置からデータを読み出し、前記読み出したデータ内の誤りを訂正する、誤り訂正方法であって、
     前記メモリ装置は、第1種符号と第2種符号との積符号における符号処理により符号化された第1データを保持し、
     前記第1データにおいて、前記第1種符号により符号化された任意の第1種符号語と、前記第2種符号により符号化された任意の第2種符号語との重複するデータ長は前記第2種符号におけるバイト長以下であり、
     前記誤り訂正方法は、
     前記メモリ装置から、前記第1データを読み出す第1の手順と、
     前記読み出した第1データに対して、前記第2種符号における復号処理を行う第2の手順と、
     前記第2の手順において復号処理が行われた第1データに対して、前記第1種符号における復号処理を行う第3の手順と、を含み、
     前記第2の手順は、前記メモリ装置から取得した第1の第2種符号語において訂正不能な誤りを検出した場合、前記第1の第2種符号語がエラーを含むことを示すエラーフラグをセットすることを含み、
     前記第3の手順は、前記第1の第2種符号語に含まれる第1のバイトを含み、前記メモリ装置内の異なるメモリユニットそれぞれに格納されるバイトからなる第1の第1種符号語において、前記エラーフラグに基づき前記第1のバイトにおけるエラーを訂正することを含む、誤り訂正方法。
    An error correction method for reading data from a memory device and correcting an error in the read data,
    The memory device holds first data encoded by a code process in a product code of a first type code and a second type code,
    In the first data, an overlapping data length of an arbitrary first type codeword encoded by the first type code and an arbitrary second type codeword encoded by the second type code is Is less than or equal to the byte length in the type 2 code,
    The error correction method is:
    A first procedure for reading the first data from the memory device;
    A second procedure for performing a decoding process in the second type code on the read first data;
    A third procedure for performing a decoding process in the first type code on the first data subjected to the decoding process in the second procedure,
    In the second procedure, when an uncorrectable error is detected in the first type 2 codeword obtained from the memory device, an error flag indicating that the first type 2 codeword includes an error is set. Including setting,
    The third procedure includes a first byte of a first type codeword including a first byte included in the first type-2 codeword and stored in each of different memory units in the memory device. And correcting an error in the first byte based on the error flag.
  12.  請求項11に記載の誤り訂正方法であって、
     前記メモリ装置は、複数のメモリチップをさらに含み、
     前記第1種符号語は、前記複数のメモリチップそれぞれに格納されるバイトからなり、
     前記第2種符号語は、1つのメモリチップの複数サイクルのデータからなり、
     前記メモリユニットは、前記複数のメモリチップそれぞれである、誤り訂正方法。
    The error correction method according to claim 11,
    The memory device further includes a plurality of memory chips,
    The first type codeword consists of bytes stored in each of the plurality of memory chips,
    The second type code word is composed of data of a plurality of cycles of one memory chip,
    The error correction method, wherein the memory unit is each of the plurality of memory chips.
  13.  請求項11に記載の誤り訂正方法であって、
     前記メモリ装置は、前記メモリ装置へのインターフェースである複数のチャネルをさらに含み、
     前記第1種符号語は、前記複数のチャネルそれぞれに格納されるバイトからなり、
     前記第2種符号語は、1つのチャネルの複数サイクルのデータからなり、
     前記メモリユニットは、前記複数のチャネルである、誤り訂正方法。
    The error correction method according to claim 11,
    The memory device further includes a plurality of channels that are interfaces to the memory device;
    The first type codeword consists of bytes stored in each of the plurality of channels,
    The second type codeword is composed of data of a plurality of cycles of one channel,
    The error correction method, wherein the memory unit is the plurality of channels.
  14.  請求項11に記載の誤り訂正方法であって、
     前記メモリ装置は、複数のバンクをさらに含み、
     前記第1種符号語は、前記複数のバンクそれぞれに格納されるバイトからなり、
     前記第2種符号語は、1つのバンクの複数サイクルのデータからなり、
     前記メモリユニットは、前記複数のバンクである、誤り訂正方法。
    The error correction method according to claim 11,
    The memory device further includes a plurality of banks,
    The first type codeword consists of bytes stored in each of the plurality of banks,
    The second type code word is composed of a plurality of cycles of data in one bank,
    The error correction method, wherein the memory unit is the plurality of banks.
  15.  メモリ装置と、
     前記メモリ装置からデータを読み出し、前記読み出したデータ内の誤りを訂正する、誤り訂正装置と、を含む誤り訂正システムであって、
     前記メモリ装置は、第1種符号と第2種符号との積符号における符号処理により符号化された第1データを保持し、
     前記第1データにおいて、前記第1種符号により符号化された任意の第1種符号語と、前記第2種符号により符号化された任意の第2種符号語との重複するデータ長は前記第2種符号におけるバイト長以下であり、
     前記誤り訂正装置は、
     前記メモリ装置から、前記第1データを読み出す読出し制御部と、
     前記読み出した第1データに対して、前記第2種符号における復号処理を行う第2復号処理部と、
     前記第2復号処理部による復号処理が行われた第1データに対して、前記第1種符号における復号処理を行う第1復号処理部と、を含み、
     前記第2復号処理部は、前記メモリ装置から取得した第1の第2種符号語において訂正不能な誤りを検出した場合、前記第1の第2種符号語がエラーを含むことを示すエラーフラグをセットし、
     前記第1復号処理部は、前記第1の第2種符号語に含まれる第1のバイトを含み、前記メモリ装置内の異なるメモリユニットそれぞれに格納されるバイトからなる第1の第1種符号語において、前記エラーフラグに基づき前記第1のバイトにおけるエラーを訂正する、誤り訂正システム。
    A memory device;
    An error correction system including an error correction device that reads data from the memory device and corrects an error in the read data,
    The memory device holds first data encoded by a code process in a product code of a first type code and a second type code,
    In the first data, an overlapping data length of an arbitrary first type codeword encoded by the first type code and an arbitrary second type codeword encoded by the second type code is Is less than or equal to the byte length in the type 2 code,
    The error correction device includes:
    A read control unit for reading the first data from the memory device;
    A second decoding processing unit for performing decoding processing in the second type code on the read first data;
    A first decoding processor that performs a decoding process on the first type code for the first data that has been decoded by the second decoding processor;
    When the second decoding processing unit detects an uncorrectable error in the first type 2 codeword acquired from the memory device, the error flag indicates that the first type 2 codeword includes an error. Set
    The first decoding processing unit includes a first first type code including a first byte included in the first second type code word and including bytes stored in different memory units in the memory device. An error correction system for correcting an error in the first byte based on the error flag in a word.
PCT/JP2014/073760 2014-09-09 2014-09-09 Error correction device, error correction method, and error correction system WO2016038673A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/073760 WO2016038673A1 (en) 2014-09-09 2014-09-09 Error correction device, error correction method, and error correction system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/073760 WO2016038673A1 (en) 2014-09-09 2014-09-09 Error correction device, error correction method, and error correction system

Publications (1)

Publication Number Publication Date
WO2016038673A1 true WO2016038673A1 (en) 2016-03-17

Family

ID=55458466

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/073760 WO2016038673A1 (en) 2014-09-09 2014-09-09 Error correction device, error correction method, and error correction system

Country Status (1)

Country Link
WO (1) WO2016038673A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012022422A (en) * 2010-07-13 2012-02-02 Panasonic Corp Semiconductor recording/reproducing device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012022422A (en) * 2010-07-13 2012-02-02 Panasonic Corp Semiconductor recording/reproducing device

Similar Documents

Publication Publication Date Title
US10922172B2 (en) On the fly raid parity calculation
EP2972871B1 (en) Methods and apparatus for error detection and correction in data storage systems
US6973613B2 (en) Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure
US6976194B2 (en) Memory/Transmission medium failure handling controller and method
US6996766B2 (en) Error detection/correction code which detects and corrects a first failing component and optionally a second failing component
US8185800B2 (en) System for error control coding for memories of different types and associated methods
US8171377B2 (en) System to improve memory reliability and associated methods
WO2018137370A1 (en) Transaction identification synchronization
US20140068319A1 (en) Error Detection And Correction In A Memory System
US8181094B2 (en) System to improve error correction using variable latency and associated methods
US8140945B2 (en) Hard component failure detection and correction
US9183078B1 (en) Providing error checking and correcting (ECC) capability for memory
US7188296B1 (en) ECC for component failures using Galois fields
JP2001249854A (en) Shared error correction for designing memory
US9898365B2 (en) Global error correction
US8185801B2 (en) System to improve error code decoding using historical information and associated methods
US9665423B2 (en) End-to-end error detection and correction
US20160139988A1 (en) Memory unit
WO2016122515A1 (en) Erasure multi-checksum error correction code
US20160147598A1 (en) Operating a memory unit
JP7249719B2 (en) Common high random bit error and low random bit error correction logic
US6460157B1 (en) Method system and program products for error correction code conversion
CN106021012B (en) Data processing circuit
JP2006323434A (en) Data processor and memory correction method therefor
US9400715B1 (en) System and method for interconnecting storage elements

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14901793

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP