Sei sulla pagina 1di 3

This article has been accepted for publication in a future issue of this journal, but has not been

fully edited. Content may change prior to final publication. Citation information: DOI 10.1109/TDMR.2017.2788144, IEEE
Transactions on Device and Materials Reliability

A Double Error Correction Code for 32-bit Data


Words with Efficent Decoding
Shanshan Liu, Jiaqiang Li, Pedro Reviriego, Marco Ottavi and Liyi Xiao

Abstract—1There has been recent interest on designing Double Unfortunately, there is no DEC DS or OLS code with that
Error Correction (DEC) codes for 32-bit data words that data block size. This has motivated the development of OLS
support fast decoding as they can be useful to protect based solutions that provide fast decoding but require a
memories. To that end, solutions based on Orthogonal Latin
Square codes have been recently presented that achieve fast
significant number of parity check bits [8],[9]. In this letter,
decoding but require a large number of parity check bits. In a DEC solution for 32 data bit words based on DS codes
this letter, a DEC code derived from Difference Set codes is combined with SEC-DED codes is proposed and evaluated.
presented. The proposed code is able to reduce the number of The results show that the scheme can reduce the number of
parity check bits needed at the cost of a slightly more complex parity check bits at the expense of a moderate increase in
decoding. Therefore, it provides memory designers with an the decoder complexity.
additional option that can be useful when making trade-offs
between memory size and speed.
Keywords —Error correction codes, memories, Difference II.PROPOSED DEC CODE
Set codes, Orthogonal Latin Square codes.
As mentioned in the introduction, the proposed solution
is a combination of DS and SEC-DED codes. The only
DEC DS code that exists is a (21,11) code that is One Step
I. INTRODUCTION
Majority Logic Decodable (OS-MLD) and can correct
Error Correction Codes (ECCs) are commonly used to double errors and detect triple errors. The proposed scheme
protect memories so that errors do not affect the data they is based on this code that is firstly optimized by removing
store [1]. Traditionally, Single Error Correction-Double one parity bit to obtain a (20,11) DEC code that is also OS-
Error Detection (SEC-DED) codes have been used [2], but MLD but that cannot detect triple errors as shown in [10]
as technology scales there is a need for more powerful error To explain the proposed code, we will first describe the
correction capabilities, for example Double Error encoding process whose block diagram is shown in Figure 1.
Correction (DEC) codes. This poses a problem as parallel It can be seen that the 32-bit data word is divided into three
decoders for traditional DEC codes are much more complex blocks, the first consists of bits 1 to 11, the second of bits
and result in a significant increase in area, power and delay 12 to 22 and finally the third block includes bits 23 to 32.
compared to the SEC-DED codes [3]. This has motivated Therefore, the first two blocks have 11 bits and the last one
the use of alternative DEC codes that can be efficiently only 10 bits. The xor of the blocks is used as an input to a
decoded using one step majority logic voting, such as (20,11) DS encoder to obtain 9 parity check bits, s1d, s2d, ...,
s9d. The first and second data blocks are fed into two SEC-
Difference Set (DS) or Orthogonal Latin Square (OLS)
DED encoders to obtain other two groups of 5 parity check
codes [4]. The main limitations of these codes are that only
bits: s1a, s2a, ..., s5a and s1b, s2b, ..., s5b. As a result of the
one block length is supported in the case of DS codes while
encoding, we obtain 19 parity check bits. This compares
DEC OLS codes require significantly more parity check bits. favorably with previous proposals based on OLS codes that
Arranging the data into a matrix form at the logical level require 21 to 23 parity check bits [8],[9].
and then adding several simple ECCs in different directions Let us now discuss how the proposed code can
can also provide a powerful error correction capability for implement double error correction on the data bits. The
memories. For example, Horizontal Vertical Diagonal block diagram and correction logic of the decoder is
(HVD) codes [5],[6] and Matrix codes [7] have been illustrated in Figure 2. The first step is to compute the
proposed. These codes can be decoded with limited syndromes and correction signals for each of the codes: e1a,
complexity but unfortunately have a large number of parity e2a, ..., e11a, e1b, e2b, ..., e11b and e1d, e2d, ..., e11d. For the
check bits that increase the memory size. SEC-DED codes, in addition to the correction signals, a
One of the most common data memory widths is 32-bit. Double Error Detected (DED) signal is generated. In a
typical decoder, each of those correction signals would be
xored with the corresponding data bit to implement the
Manuscript received September 1, 2017, in revised form November 11, correction. In our case, the first two groups of correction
2017, and accepted December 25, 2017. (Corresponding author: Liyi Xiao). signals could be used to implement SEC on the first two
S. Liu, J. Li and L. Xiao are with the Microelectronics Center, Harbin
Institute of Technology, Harbin 150001, People’s Republic of China. data blocks. However, the code should implement DEC
P.Reviriego is with the ARIES Research Center, Universidad Antonio instead of SEC. In the case of the DS code, the inputs are
de Nebrija, C. Pirineos 55, Madrid, Spain. not data bits but rather the xor of three data bits. This means
M.Ottavi is with the Department of Electronic Engineering, University that a correction signal can correspond to an error in any of
of Rome Tor Vergata, Via del Politecnico 1, 00133 Rome, Italy.
the three bits used to generate the xor used as input for
1

1530-4388 (c) 2017 IEEE. Personal use is permitted, but republication/redistribution requires IEEE permission. See http://www.ieee.org/publications_standards/publications/rights/index.html for more information.
This article has been accepted for publication in a future issue of this journal, but has not been fully edited. Content may change prior to final publication. Citation information: DOI 10.1109/TDMR.2017.2788144, IEEE
Transactions on Device and Materials Reliability

Fig.1 Encoder for the proposed scheme.

which the correction signal is activated. In summary, the other hand, a double error on bits d1 and d23 would
correction signals from each of the codes cannot be directly activate only e1a so that the xor is one and bit d23 is
used to implement DEC and some additional logic is needed corrected.
as described in the following.
Finally, errors can also affect the stored parity check bits.
For the bits in the first and second blocks, the correction
However, single or double errors on parity bits cannot cause
of the data bits can be implemented as follows:
miscorrections. The same applies to an error on a parity bit
 If the DED is not activated, then use the correction and a data bit and in addition, in that case, the data bit is
signal from the SEC-DED code to perform correction. always corrected.
In this case, there can be at most one bit in error in the This case by case analysis shows that the proposed
block and therefore the SEC correction signal can be scheme is able to ensure that the 32 data bits are correctly
used. recovered when the memory suffers a single or a double
 If the DED is activated, then use the correction signal error. In the next section, the code is evaluated in terms of
from the DS code to perform correction. In this case, its error correction capabilities and also its implementation
there cannot be errors on the other blocks as we complexity
assume a maximum of two errors. Therefore, the DS
correction signals for the two bits will be activated and
can be used for correction. III. EVALUATION
The proposed encoder and decoder have been
This logic is illustrated in Figure 2.
implemented in HDL and evaluated in terms of their error
For the bits in the third block, the correction of the data
correction capabilities and their implementation cost. In the
bits is slightly more complex. This is because the input to
first case, all possible combinations of single and double bit
the DS code is the xor of the bits from the three blocks. This
errors have been injected on coded words to check that the
means that the correction signals of the DS code may be
decoder is able to correctly recover the 32 data bits. This
activated by errors on any of the blocks. For example, an
validates the case analysis presented in the previous section
error on bit d1 would activate the correction signal e1d.
and confirms that the code provides DEC protection.
Additionally a double error may compensate so that it is not
The overheads required in an ECC protected memory
seen by the DS decoder. For example, an error on bits d1
come from two main factors: the parity check bits that need
and d12 would produce a correct value in the first input to
to be stored per word and the encoder/decoder circuitry.
the DS decoder. The logic used for correction is shown in
The overhead introduced by the parity bits is proportional to
Figure 2 and works as follows:
the memory size as each word has to store them while the
 If any of two DED signals from the first blocks is encoder/decoder circuitry is constant regardless of the
activated, no correction is made. This is because the memory size. To estimate the cost of the additional circuitry,
third block has no errors in this case. the encoders and decoders have been mapped to a TSMC
 In the rest of the cases, the correction is done when the 65nm library using Synopsis Design Compiler configured
xor of the two SEC correction signals that correspond to optimize speed. The results are summarized in Table I
to the bits used to generate the DS input bit and the DS that also includes HVD codes, Matrix codes, previously
correction signal for that bit is one. When there are proposed OLS based schemes and a traditional DEC Bose
only errors in the third block this is equivalent to using Chaudhuri Hocquenghem (BCH) code. The circuit area is
the DS decoder. On the other hand, if there are errors reported in μm2 , power in mW and delay in ns. The values
on the first or second block, the use of the SEC reported for area and power include the encoder and the
correction signals ensures that no miscorrection is decoder while for the delay that of the decoder is provided
done on the third block. For example, an error on bit as it is the largest.
d1 would activate the correction signals e1a and e1d so It can be observed that the BCH code is the one that has
that the xor is zero and bit d23 is not corrected. On the the lowest number of parity check bits but also the largest

1530-4388 (c) 2017 IEEE. Personal use is permitted, but republication/redistribution requires IEEE permission. See http://www.ieee.org/publications_standards/publications/rights/index.html for more information.
This article has been accepted for publication in a future issue of this journal, but has not been fully edited. Content may change prior to final publication. Citation information: DOI 10.1109/TDMR.2017.2788144, IEEE
Transactions on Device and Materials Reliability

Fig.2 Decoder for the proposed scheme.

decoding complexity. HVD codes and Matrix codes can be schemes based on Orthogonal Latin Square (OLS) codes while providing a
decoded simply at the cost of a significant increase on the decoding delay that is lower than that of a traditional Bose Chaudhuri
Hocquenghem (BCH) DEC code. Therefore it provides memory designers
number of parity check bits. The existing OLS based with another option that can be useful to trade-off delay and memory size.
solutions are also able to significantly reduce the decoding This will be useful for applications that cannot tolerate the BCH decoding
complexity but still cost many parity check bits. They are of delay but for which existing solutions have some delay margin. Finally, the
interest for memories that have to operate at high speed and scheme proposed in this paper can be used to combine other OS-MLD
cannot tolerate the decoding delay of a BCH code. The DEC codes with SEC-DED codes to protect different word lengths. This is
however constrained by the availability of OS-MLD DEC codes. The study
proposed solution provides another option that reduces the of this generalization is left for future work.
number of parity check bits at the cost of an increase of
decoding complexity but achieving a decoding delay that is
18.3 per cent below that of a BCH code. Therefore, when a REFERENCES
32-bit data needs to be protected, it can be a good option for [1] C. L. Chen and M. Y. Hsiao, Error-correcting codes for
designs that have a decoding delay constraint that is larger semiconductor memory applications: A state of the art review, IBM J.
than that of HDV codes, Matrix codes, and the existing Res. Develop., vol. 28, No. 2, pp. 124-134, 1984.
[2] V. Gherman, S. Evain, N. Seymour, and Y. Bonhomme, Generalized
OLS solutions but lower than that of a traditional BCH
parity check matrices for SEC-DED codes with fixed parity, in Proc.
decoder. In those cases, the delay goals can be met while IEEE On Line Testing Symp., July 2011.
reducing the number of parity check bits and thus the [3] R. Naseer and J. Draper, DEC ECC design to improve memory
memory size. reliability in sub 100 nm technologies, Proc. IEEE ICECS, pp. 586-
589, 2008.
[4] S. Lin and D. J. Costello, Error Control Coding, 2nd ed. Englewood
Cliffs, NJ, USA: Prentice Hall, 2004.
TABLE I. COMPARISONS OF THE DIFFERENT ALTERNATIVES FOR DEC
[5] M. Kishani, H.R. Zarandi, H. Pedram, et al, HVD: horizontal-
PROTECTION OF 32-BIT MEMORIES
vertical-diagonal error detecting and correcting code to protect
against with soft error, Design Automation for Embedded Systems,
Code Parity Area Power Delay
vol. 15, No (3-4), 2011, pp.289-310.
bits (μm2) (mW) (ns)
[6] M.S. Rahman, M.S. Sadi, S. Ahammed, Soft error tolerance using
HVD [5] 33 4592 4.57 0.64 Horizontal-Vertical-Double-Bit Diagonal parity method,
Matrix [7] 28 3893 4.11 0.67 International Conference on Electrical Engineering and Information
OLS based scheme [8] 23 4900 6.31 0.77 Communication Technology. IEEE, 2015, pp.1-6.
First OLS based scheme [9] 22 5401 7.21 0.80 [7] C. Argyrides, D.K. Pradhan, T. Kocak, Matrix Codes for Reliable
Second OLS based scheme [9] 21 7470 10.67 0.88 and Cost Efficient Memory Chips, IEEE Transactions on Very Large
Proposed scheme 19 7140 8.93 0.98 Scale Integration Systems, vol. 19, No. 3, 2011, pp.420-428.
BCH 12 21936 36.39 1.20 [8] S. Liu, Y. Xiao, G.Mao, Extend orthogonal Latin square codes for 32
bit data protection in memory applications, Microelectronics
Reliability, Elsevier, vol. 63, August 2016, pp. 278-283.
[9] S. Liu, P. Reviriego, A. Sanchez Macian, J.A. Maestro, L. Xiao,
IV.CONCLUSION Comments on “Extend orthogonal Latin square codes for 32-bit data
protection in memory applications, Microelectronics Reliability,
In this letter a Double Error Correction (DEC) code to protect 32 bit (2016)”, Microelectronics Reliability, Elsevier, vol. 69, February
data word memories has been proposed. The code is based on the use of a 2017, pp. 126-129.
DEC Difference Set (DS) code combined with two Single Error [10] M. Demirci, P. Reviriego, J.A. Maestro, Optimized Parallel Decoding
Correction-Double Error Detection (SEC-DED) codes. The proposed of Difference Set Codes for High Speed Memories, Microelectronics
solution reduces the number of parity check bits compared to existing Reliability, vol. 54, No 11, November 2014, pp. 2645-2648.
3

1530-4388 (c) 2017 IEEE. Personal use is permitted, but republication/redistribution requires IEEE permission. See http://www.ieee.org/publications_standards/publications/rights/index.html for more information.

Potrebbero piacerti anche