Reed-Solomon Code
๊ฐ์
Reed-Solomon(RS) Code๋ ๋นํธ ํ๋๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ๋ค๋ฃจ๋ ๋์ ์ฌ๋ฌ ๋นํธ๋ฅผ ๋ฌถ์ ์ฌ๋ณผ(symbol)์ ๋จ์๋ก ์ค๋ฅ๋ฅผ ์ ์ ํ๋ ์ ํ ๋ธ๋ก ์ฝ๋์
๋๋ค. ์ฌ๋ณผ์ GF(2^m)์ ์์๋ก ํด์ํ๊ณ , ๋ฐ์ดํฐ ์ฌ๋ณผ k๊ฐ๋ฅผ n๊ฐ์ ์ฝ๋ ์ฌ๋ณผ๋ก ํ์ฅํฉ๋๋ค. RS Code๋ Maximum Distance Separable(MDS) ์ฝ๋์ด๋ฏ๋ก ๊ฐ์ ๊ธธ์ด์ ๋ค๋ฅธ ์ฝ๋์๋์ ๊ฐ๋ฅํ ํ ๋ฉ๋ฆฌ ๋จ์ด์ง๋๋ก ์ค๊ณ๋๋ฉฐ, ์ถ๊ฐํ ํจ๋ฆฌํฐ ์ฌ๋ณผ ์๋งํผ ์ค๋ฅยท์๊ฑฐ ์ ์ ์์ฐ์ ๋ช
ํํ๊ฒ ๊ณ์ฐํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ DDR ๋ฉ๋ชจ๋ฆฌ์ ์ธ๋ถ ECC๋ ํ์ฅ Hamming ๋๋ Hsiao ๊ธฐ๋ฐ SECDED๊ฐ ํํฉ๋๋ค. RS Code๋ ๋ชจ๋ DDR ๋ชจ๋์ ๊ธฐ๋ณธ ECC๊ฐ ์๋๋ผ, ์ฌ๋ฌ DRAM ์นฉ์ ์ฌ๋ณผ์ ๋ถ์ฐํด ์นฉ ๋จ์ ์ฅ์ ๊น์ง ๋ค๋ฃจ๋ ค๋ symbol-based ECC์ Chipkill ๊ณ์ด ์ค๊ณ๋ฅผ ์ดํดํ๊ธฐ ์ํ ๊ฐํ ์ฝ๋ ์ ํ์ง์ ๋๋ค. ๋ฐ๋ผ์ ์ฝ๋์ ์์๋ง์ผ๋ก Chipkill์ด ์์ฑ๋๋ ๊ฒ์ด ์๋๋ผ, DRAM ์นฉ์ ๋ฐ์ดํฐ ํญ, ์ฌ๋ณผ ๋งคํ, ์ธํฐ๋ฆฌ๋น, ์ค๋ฅ ์์น ์ ๋ณด, ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ ์ ์ฑ ์ ํจ๊ป ์ค๊ณํด์ผ ํฉ๋๋ค.
์ด ๋ฌธ์๋ ํน์ ์์ฉ ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ์ ๋น๊ณต๊ฐ ๊ตฌํ์ ์ค๋ช
ํ๋ ๊ฒ์ด ์๋๋ผ, RS Code๋ฅผ ํ๋์จ์ดยทRAS ๊ด์ ์์ ์ค๊ณ ๋ฌธ์๋ฅผ ์ฝ์ ์ ์๋๋ก ์ํ์ ๋ชจ๋ธ๊ณผ ๋ฐ์ดํฐ ๊ฒฝ๋ก๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. n, k, m, ์์ฑ ๋คํญ์์ ์์ ์ง์ b, field polynomial, ์ฌ๋ณผ ์์๊ฐ ๋ช
์๋์ง ์์ผ๋ฉด ๊ฐ์ "RS Code"๋ผ๋ ์๋ก ํธํ๋์ง ์์ ์ ์์ต๋๋ค.
๊ทธ๋ฆผ 1. systematic RS ์ธ์ฝ๋๋ M(x)๋ฅผ g(x)๋ก ๋๋์ด r=n-k๊ฐ์ parity๋ฅผ ๋ง๋ค๊ณ , ์ฝ๋์๋์ ๊ฐ ์ฌ๋ณผ์ ๋ฌผ๋ฆฌ ์ค๋ฅ ๋จ์์ ์ฐ๊ฒฐํ๋ค. ๊ทธ๋ฆผ์ RS(10,6)์ ๊ตฌ์กฐ ์ค๋ช
์ฉ ์์์ด๋ฉฐ ์ค์ DRAM์ n, k, m์ ์ฝ๋์๋์ ์นฉ ๋งคํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
ํต์ฌ ๊ฐ๋
์ฌ๋ณผ๊ณผ ์ ํ์ฒด
RS Code์ ์ฌ๋ณผ ํ๋๋ m๋นํธ์ด๋ฉฐ ๊ฐ๋ฅํ ๊ฐ์ 2^m๊ฐ์
๋๋ค. ๋์ฝ๋๋ ์ฌ๋ณผ ๊ฐ์ ์ ํ์ฒด์ ์์๋ก ์ทจ๊ธํ๋ฏ๋ก, ์ผ๋ฐ ์ ์ ์ฐ์ฐ๊ณผ ๋ค๋ฅธ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
| ์ฐ์ฐ | GF(2^m)์์์ ์๋ฏธ |
ํ๋์จ์ด ๊ด์ |
|---|---|---|
| ๋ง์ /๋บ์ | ๋นํธ๋ณ XOR | XOR ๋คํธ์ํฌ๋ก ๊ตฌํ ๊ฐ๋ฅ |
| ๊ณฑ์ | ๋คํญ์ ๊ณฑ์ irreducible polynomial๋ก ๋๋ ๋๋จธ์ง | GF multiplier ๋๋ lookup ๊ตฌ์กฐ |
| ์ญ์ | 0์ด ์๋ ์์์ ๊ณฑ์ ์ญ์ | ์กฐํฉ ๋ ผ๋ฆฌ, ํ ์ด๋ธ ๋๋ ๋ฐ๋ณต ํ๋ก |
| ์ฌ๋ณผ | m๋นํธ ๋ฒกํฐ |
x4 DRAM์ ํ beat, ๋ฐ์ดํธ, ๋๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ์ธ ๋จ์ |
GF(2^m)์ ํํ์ irreducible polynomial๊ณผ primitive element ์ ํ์ ์์กดํฉ๋๋ค. ๊ฐ์ m์ ์ฌ์ฉํ๋๋ผ๋ ํ๋ ๋คํญ์, ์์ฑ ๋คํญ์์ ์์ ์ง์, ์ฌ๋ณผ ์์๊ฐ ๋ค๋ฅด๋ฉด ๋ฐ์ดํธ์ด๋ก ๋ณด์ด๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ํธ ์ด์ฉ ๊ฐ๋ฅํ ๊ตฌํ์ ์ฝ๋ ํ๋ผ๋ฏธํฐ์ ํ๋ ํํ์ ํจ๊ป ์ ์ํด์ผ ํฉ๋๋ค.
์ ํ์ฒด ํํ๊ณผ ์ค์ ์ฐ์ฐ
์ฌ๋ณผ์ GF(2^m)์ ์์๋ก ํํํ ๋ ํ๋์ ์์๋ ๋ณดํต ์ฐจ์๊ฐ m-1 ์ดํ์ธ ์ด์ง ๋คํญ์์ผ๋ก ์ทจ๊ธํฉ๋๋ค.
a = a_(m-1) z^(m-1) + ... + a_1 z + a_0
๊ตฌํ์ irreducible polynomial p(z)๋ฅผ ์ ํด p(z)=0์ด๋ผ๋ ๊ด๊ณ๋ก ๋์ ์ฐจ์ ํญ์ ์ค์
๋๋ค. ์๋ฅผ ๋ค์ด m=8์์ ํํ ์ฐ์ด๋ ํ ํํ์ p(z)=z^8+z^4+z^3+z^2+1์ด๋ฉฐ, ์ด๊ฒ์ ํ๋์ ๊ฐ๋ฅํ ํ์คํ ์ ํ์ด์ง ๋ชจ๋ RS ๊ตฌํ์ ํ์ ๋คํญ์์ ์๋๋๋ค.
| ์ฐ์ฐ | ์ํ์ ์ฒ๋ฆฌ | RTL/ํ๋ก ๊ตฌํ์ ๋ํ ์ ํ |
|---|---|---|
| ๋ง์ ยท๋บ์ | ๊ณ์๋ณ XOR, a+b=a-b |
๋ณ๋ ฌ XOR |
| ๊ณฑ์ | ๋คํญ์ ๊ณฑ ๋ค p(z)๋ก ๋๋จธ์ง ๊ณ์ฐ |
์กฐํฉ GF multiplier, log/antilog ROM |
| ๋๋์ | ๋ถ๋ชจ์ ๊ณฑ์ ์ญ์์ ๊ณฑํจ | inverse table ๋๋ ๋ฐ๋ณต ์ฐ์ฐ |
0 ์ฒ๋ฆฌ |
๊ณฑ์ ์ญ์์ด ์์ | magnitude/locator ์์ธ ์ฒ๋ฆฌ |
| ๋ก๊ทธ ํํ | a=alpha^i๋ก ์ง์ํ |
log table + modular add |
log/antilog ํ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณฑ์ ์ ์ง์ ๋ง์ ์ผ๋ก ๋ฐ๊ฟ ์ ์์ง๋ง, 0์ ๋ณ๋๋ก ์ฒ๋ฆฌํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ง์ฐ์ ๊ฐ์ํด์ผ ํฉ๋๋ค. ๊ณ ์ ๋ณ๋ ฌ ๋์ฝ๋๋ ์ง์ multiplier๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ composite-field ํ๋ก๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ค ๋ฐฉ์์ ์ ํํ๋๋ผ๋ ํ๋ ๋คํญ์๊ณผ primitive element๊ฐ ์ธ์ฝ๋ยท๋์ฝ๋์์ ๋์ผํด์ผ ํฉ๋๋ค.
RS(n, k) ํ๋ผ๋ฏธํฐ
RS(n,k)๋ ์ด n๊ฐ์ ์ฌ๋ณผ ์ค k๊ฐ๋ฅผ ๋ฐ์ดํฐ ์ฌ๋ณผ๋ก, n-k๊ฐ๋ฅผ ํจ๋ฆฌํฐ ์ฌ๋ณผ๋ก ์ฌ์ฉํ๋ ์ฝ๋์
๋๋ค.
| ๊ธฐํธ | ์๋ฏธ |
|---|---|
m |
์ฌ๋ณผ์ ๊ตฌ์ฑํ๋ ๋นํธ ์ |
q = 2^m |
์ ํ์ฒด ์์ ์ |
n |
์ฝ๋์๋์ ์ ์ฒด ์ฌ๋ณผ ์ |
k |
์๋ณธ ๋ฐ์ดํฐ ์ฌ๋ณผ ์ |
n-k |
์ถ๊ฐ ํจ๋ฆฌํฐ ์ฌ๋ณผ ์ |
R = k/n |
์ฝ๋์จ. ๋์์๋ก ์ค๋ฒํค๋๋ ์์ง๋ง ์ ์ ์ฌ์ ๊ฐ ์ค์ด๋ฆ |
d_min |
์ต์ ๊ฑฐ๋ฆฌ. RS Code์์๋ n-k+1 |
t |
์๋ ค์ง์ง ์์ ์ค๋ฅ ์์น๋ฅผ ์ ์ ํ ์ ์๋ ์ฌ๋ณผ ์, floor((n-k)/2) |
๋ณดํต GF(2^m) ์์ primitive RS Code๋ n <= 2^m - 1 ๋ฒ์์์ ๊ตฌ์ฑํฉ๋๋ค. m=8์ด๋ฉด ๋๋ฆฌ ์๋ ค์ง RS(255,223)์ฒ๋ผ ์ต๋ 255์ฌ๋ณผ ์ฝ๋์๋๋ฅผ ๋ง๋ค ์ ์๊ณ , 32๊ฐ์ ํจ๋ฆฌํฐ ์ฌ๋ณผ๋ก ์ต๋ 16๊ฐ์ ๋ฏธ์ง ์ค๋ฅ ์ฌ๋ณผ์ ์ ์ ํ ์ ์์ต๋๋ค. ๋ ์งง์ ์ฝ๋์๋๊ฐ ํ์ํ๋ฉด ํฐ ์ฝ๋๋ฅผ ๊ฐ๋
์ ์ผ๋ก 0์ผ๋ก ์ฑ์ด ๋ค ์ผ๋ถ ์ฌ๋ณผ์ ์ ์กํ์ง ์๋ shortened RS Code๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ๋ ๊ธธ์ด์ ์ค๋ฒํค๋ ์ ํ
q=2^m์ธ primitive RS Code๋ ๋ณดํต n <= q-1์ ์ฌ๋ณผ ๊ธธ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํจ๋ฆฌํฐ ์ฌ๋ณผ ์ r=n-k๋ ๋ณดํธ ์ฌ์ ๋ฅผ ๊ฒฐ์ ํ๊ณ , m์ ํ ์ค๋ฅ ๋จ์๊ฐ ๋ช bit๋ฅผ ํฌํจํ๋์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ฐ๋ผ์ m์ ํค์ฐ๋ ๊ฒ์ด ํญ์ ์ข์ ๊ฒ์ ์๋๋๋ค. ํ ์ฌ๋ณผ์ด ๋๋ฌด ๋์ผ๋ฉด ๋จ์ผ ๋ฌผ๋ฆฌ ์ฌ๊ฑด์ด ํ ๋ฒ์ ํฐ ์ค๋ฅ ๋จ์๋ฅผ ์๋นํ ์ ์์ต๋๋ค.
| ์์ | m |
n-k |
์ฝ๋์จ k/n |
๋ฏธ์ง ์ค๋ฅ | ์๋ ค์ง ์๊ฑฐ | ๋น๊ณ |
|---|---|---|---|---|---|---|
RS(10,6) |
ํ๋กํ์ผ์ ๋ฐ๋ผ ๋ค๋ฆ | 4 | 60.00% | 2 | 4 | ์ด ๋ฌธ์ ๋์์ ์ค๋ช ์ฉ ์ฝ๋ |
RS(255,223) |
8 | 32 | 87.45% | 16 | 32 | ํต์ ยท์ ์ฅ์ฅ์น์์ ๋๋ฆฌ ์๋ ค์ง ์ฅ์ฝ๋ ์ |
RS(255,239) |
8 | 16 | 93.73% | 8 | 16 | ๋ฎ์ ์ค๋ฒํค๋์ ์์ ์ ์ ์ฌ์ |
๋ฐ์ดํฐ ๋๋น ํจ๋ฆฌํฐ ์ค๋ฒํค๋๋ r/k์
๋๋ค. ์๋ฅผ ๋ค์ด RS(10,6)์ ํจ๋ฆฌํฐ๊ฐ ๋ฐ์ดํฐ์ 66.7%์ด์ง๋ง, RS(255,223)์ 14.35%์
๋๋ค. ๊ฐ์ ์ ์ ์ฌ๋ณผ ์๋ผ๋ ์งง์ ์ฝ๋์๋๋ ํจ๋ฆฌํฐ ๋น์จ๊ณผ ์ธํฐํ์ด์ค ํญ์ ๋ ํฐ ๋ถ๋ด์ ์ค ์ ์์ผ๋ฏ๋ก cache line, burst, rank ์ ๊ทผ ๋จ์์ ํจ๊ป ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
MDS์ ์ค๋ฅ ์ ์ ์์ฐ
RS Code์ ์ต์ ๊ฑฐ๋ฆฌ d_min = n-k+1์ ๋ค์ ๋ณด์ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ค๋ฅ ์์น๋ฅผ ๋ชจ๋ฅด๋ ์ฌ๋ณผ ์ค๋ฅ
e๊ฐ์ ์์น๋ฅผ ์๋ ์๊ฑฐs๊ฐ๊ฐ ํจ๊ป ์์ ๋2e + s <= n-k์ด๋ฉด ์ ์ ๊ฐ๋ฅ - ์ค๋ฅ ์์น๋ฅผ ๋ชจ๋ฅด๋ฉด ์ต๋
floor((n-k)/2)๊ฐ ์ฌ๋ณผ ์ค๋ฅ ์ ์ - ์์น๊ฐ ์๋ ค์ง ์๊ฑฐ๋ง ์์ผ๋ฉด ์ต๋
n-k๊ฐ ์ฌ๋ณผ ์๊ฑฐ ๋ณต๊ตฌ - ์์ ๋ encoding symbol ์ค ์์์
k๊ฐ๊ฐ ์ ํํ๋ค๋ฉด MDS ์ฑ์ง์ ๋ฐ๋ผ ์๋ณธk๊ฐ ๋ณต์ ๊ฐ๋ฅ
์ฌ๊ธฐ์ ์ค๋ฅ(error)๋ ๊ฐ์ด ํ๋ ธ์ง๋ง ์์น๋ฅผ ๋ชจ๋ฅด๋ ์ฌ๋ณผ์ด๊ณ , ์๊ฑฐ(erasure)๋ ํด๋น ์ฌ๋ณผ์ด ์์๋์๊ฑฐ๋ ์ ๋ขฐํ ์ ์๋ค๋ ์์น ์ ๋ณด๊ฐ ๋์ฝ๋์ ์ ๊ณต๋ ๊ฒฝ์ฐ์ ๋๋ค. ๊ฐ์ ํจ๋ฆฌํฐ ์์ฐ์์๋ ์ค๋ฅ๋ฅผ ์๊ฑฐ๋ก ๋ฐ๊พธ๋ฉด ์์น ํ์ ๋ถ๋ด์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ์์ ์ฌ๋ณผ์ ๋ณต๊ตฌํ ์ ์์ต๋๋ค. ๋จ, ์๋ชป๋ ์์น๋ฅผ ์๊ฑฐ๋ก ํ์ํ๋ฉด ๋์ฝ๋์ ์ ๋ ฅ ๊ฐ์ ์ด ๊นจ์ง๋ฏ๋ก ์ค๋ฅ ์์น ํ์ง ๊ฒฝ๋ก๋ ๋ณดํธํด์ผ ํฉ๋๋ค.
์ค๋ฅ ๋จ์์ burst ์ค๋ฅ
RS Code๊ฐ ์ ์ ํ๋ ๋จ์๋ bit๊ฐ ์๋๋ผ symbol์ ๋๋ค. ์ฌ๋ณผ์ ํ bit๋ง ๋ค์งํ๋ ๊ทธ ์ฌ๋ณผ ํ๋์ ์ค๋ฅ ์์ฐ์ ์ฌ์ฉํ๊ณ , ์ฌ๋ณผ์ ๋ชจ๋ bit๊ฐ ํ๋ ค๋ ์ญ์ ์ฌ๋ณผ ํ๋๋ก ๊ณ์ฐ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ์๋ bit ์ค๋ฅ๊ฐ ํ๋ ๋๋ ์์์ ์ฌ๋ณผ ์์ ๋ชจ์ด๋ฉด ๊ฐํ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ฐ๋๋ก bit interleaving ๋๋ฌธ์ ํ๋์ ๋ฌผ๋ฆฌ์ ์ฌ๊ฑด์ด ๋ง์ ์ฌ๋ณผ์ ํฉ์ด์ง๋ฉด ๋์ผํ ํจ๋ฆฌํฐ ์์ฐ์ ๋ ๋นจ๋ฆฌ ์๋ชจํฉ๋๋ค.
์ด ํน์ฑ์ DRAM ์นฉ ์ฅ์ ๋ฅผ ๋ค๋ฃฐ ๋ ํนํ ์ค์ํฉ๋๋ค. ํ x4 ์นฉ์ ์ถ๋ ฅ์ด ํ๋์ ๋ ผ๋ฆฌ ์ฌ๋ณผ์ ๋์ํ๋๋ก ๋ฐฐ์นํ๋ฉด ์นฉ ์ฅ์ ๋ฅผ ์๊ฑฐ๋ก ํ์ํ๊ธฐ ์ฝ์ง๋ง, ํ ์นฉ์ bit๋ค์ด ์ฌ๋ฌ ์ฝ๋์๋์ ์์ฌ ์์ผ๋ฉด ๋ณต๊ตฌํด์ผ ํ ์๊ฑฐ ์์ ์ฝ๋์๋ ๋ฒ์๊ฐ ๋ฌ๋ผ์ง๋๋ค. ์ฌ๋ณผ ํญ๊ณผ ๋ฐ์ดํฐ ๋ฐฐ์น๋ ์ฝ๋ ์ ํ๋งํผ ์ค์ํ ์ค๊ณ ๋ณ์์ ๋๋ค.
Systematic, non-systematic, shortened ์ฝ๋
systematic RS Code์์๋ ์ฒ์ k๊ฐ์ encoding symbol์ด ์๋ณธ ๋ฐ์ดํฐ ์ฌ๋ณผ๊ณผ ๊ฐ๊ณ , ๋ค์ n-k๊ฐ๊ฐ repair ๋๋ parity symbol์
๋๋ค. ์ด ๋ฐฉ์์ ์ค๋ฅ๊ฐ ์์ ๋ ์๋ณธ ๋ฐ์ดํฐ๊ฐ ๊ทธ๋๋ก ์ ๋ฌ๋๋ฏ๋ก ์ ์ ๊ฒฝ๋ก๊ฐ ๋จ์ํฉ๋๋ค. non-systematic ํํ์ ๋คํญ์ ํ๊ฐ๋ ํ๋ ฌ ๊ด์ ์์ ์์ฐ์ค๋ฌ์ธ ์ ์์ง๋ง, ๋ฉ๋ชจ๋ฆฌยท์ ์ฅ์ฅ์น ์ธํฐํ์ด์ค์์๋ ๋ฐ์ดํฐ์ ํจ๋ฆฌํฐ๋ฅผ ๋ถ๋ฆฌํ๋ systematic ๋ฐฐ์น๊ฐ ๊ด๋ฆฌํ๊ธฐ ์ฝ์ต๋๋ค.
shortening์ ์ต๋ ๊ธธ์ด ์ฝ๋์ ์ผ๋ถ ์
๋ ฅ ์ฌ๋ณผ์ ๊ฐ๋
์ ์ผ๋ก 0์ผ๋ก ์ฑ์ฐ๊ณ ์ ์กํ์ง ์๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ด๋ฅผ ์ด์ฉํ๋ฉด GF(2^8)์ 255์ฌ๋ณผ ํ๊ณ๋ฅผ ์ ์งํ๋ฉด์๋ ์์ cache line, memory burst ๋๋ ๋ด๋ถ ECC ๋ธ๋ก์ ๋ง์ถ ์ฌ๋ฌ RS(n',k') ๊ตฌ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค.
์์ฑ ๋คํญ์๊ณผ ํ๋ ฌ ํํ
ํจ๋ฆฌํฐ ์ฌ๋ณผ์ด r=n-k๊ฐ์ธ ์ผ๋ฐ์ ์ธ RS Code์ ์์ฑ ๋คํญ์์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ์ ์์ต๋๋ค.
g(x) = product(i=0..r-1) (x - alpha^(b+i))
b๋ ์ฒซ ๋ฒ์งธ root์ ์ง์์
๋๋ค. b=0๊ณผ b=1 ์ค ๋ฌด์์ ์ฌ์ฉํ๋์ง๋ ๊ตฌํ ํ๋กํ์ผ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฉฐ, ๋ ๊ตฌํ์ ๊ฐ์ n,k,m์ ์ฌ์ฉํด๋ syndrome ๊ฐ๊ณผ ํจ๋ฆฌํฐ ๋ฐ์ดํธ๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
systematic ์ธ์ฝ๋ฉ์์๋ ๋ฉ์์ง ๋คํญ์ M(x)๋ฅผ x^r๋งํผ ์ด๋ํ ๋ค ์์ฑ ๋คํญ์์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ํจ๋ฆฌํฐ๋ก ์ฌ์ฉํฉ๋๋ค.
R(x) = x^r M(x) mod g(x)
C(x) = x^r M(x) + R(x)
์ฌ๊ธฐ์ ๋ง์
๊ณผ ๋บ์
์ characteristic-2 ์ ํ์ฒด์์ ๊ฐ์ XOR ์ฐ์ฐ์
๋๋ค. ๋ฐ๋ผ์ C(x)๋ g(x)๋ก ๋๋์ด ๋จ์ด์ง๊ณ , ๋ฐ์ดํฐ ์ฌ๋ณผ์ ๊ทธ๋๋ก ๋ณด์กดํ๋ systematic ์ฝ๋์๋๊ฐ ๋ฉ๋๋ค.
ํ๊ฐํ ๊ตฌํ์์๋ ๋ฉ์์ง ๋คํญ์์ ์ฌ๋ฌ field point์์ ํ๊ฐํฉ๋๋ค.
C_j = M(alpha^(b+j)), j = 0 ... n-1
์ด ์์ ๊ณ์ ํ๋ ฌ์ Vandermonde ํ๋ ฌ์ ํํ๋ฅผ ๊ฐ์ง๋ฉฐ, ์์์ k๊ฐ ์ ์ ์ฌ๋ณผ์์ ์๋ณธ์ ๋ณต์ํ ์ ์๋ค๋ MDS ์ฑ์ง์ ์ค๋ช
ํฉ๋๋ค. ๋ฐ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ์ ์ ์ง์ฐ ๊ฒฝ๋ก๋ ๋ณดํต ์ ์ฒด ํ๋ ฌ์ ์ง์ ๊ณฑํ๊ธฐ๋ณด๋ค ์์ฑ ๋คํญ์ ๊ธฐ๋ฐ์ ๋ณ๋ ฌ LFSR์ ํ์ดํ๋ผ์ธ GF multiplier๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ฒ์ฌ ํ๋ ฌ ๊ด์ ์์๋ ์ ์ ํ systematic form์ ๋ํด ๋ค์๊ณผ ๊ฐ์ด ํํํ ์ ์์ต๋๋ค.
G = [ I_k | P ]
H = [ -P^T | I_r ]
H * C^T = 0
GF(2^m)์์๋ -P^T=P^T์ด์ง๋ง, ์ผ๋ฐ์ ์ธ ํ๋ ฌ ํ๊ธฐ์์๋ ๋ถํธ๋ฅผ ์ ์งํฉ๋๋ค. ์ค์ ๊ตฌํ ๊ฒ์ฆ์์๋ G์ H์ convention, ์ฌ๋ณผ ์์, MSB/LSB ๋ฐฉํฅ์ ํจ๊ป ๊ณ ์ ํด์ผ ํฉ๋๋ค.
๋น๊ต/๋ถ์
ECC ์ฝ๋ ๋น๊ต
| ์ฝ๋ ๋๋ ๋ฐฉ์ | ๊ธฐ๋ณธ ๋จ์ | ๊ฐ์ | ๋ํ ํ๊ณ | DRAM/์คํ ๋ฆฌ์ง ์ญํ |
|---|---|---|---|---|
| Hamming SECDED | ๋นํธ | ๋ฎ์ ์ง์ฐ, 1๋นํธ ์ ์ ยท2๋นํธ ๊ฒ์ถ | ์นฉ ๋จ์ยท๋ค์ค ์ฌ๋ณผ ์ฅ์ ์ ์ทจ์ฝ | ์ผ๋ฐ ์ธ๋ถ ECC์ ๊ธฐ๋ณธ ๋ชจ๋ธ |
| Hsiao SECDED | ๋นํธ | odd-weight ํ๋ ฌ๋ก XOR fan-in ์ต์ ํ | ๋ณด์ฅ ๋ฒ์๋ ๊ธฐ๋ณธ SECDED์ ๊ฐ์ | ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ ๋ ผ๋ฆฌ ์ต์ ํ |
| BCH | ๋นํธ/๋คํญ์ | ๋ค์ค bit ์ค๋ฅ๋ฅผ ์ ํด์ง ๊ฐ๋๋ก ์ ์ | ๊ฐ๋๋ฅผ ๋์ด๋ฉด ํจ๋ฆฌํฐ์ ๋์ฝ๋๊ฐ ์ปค์ง | NAND์ bit ์ค๋ฅ ์ ์ |
| Reed-Solomon | ์ฌ๋ณผ | ์ฌ๋ณผ ์ค๋ฅยท์๊ฑฐยทburst ์ค๋ฅ, MDS ๋ณด์ฅ | GF ์ฐ์ฐ๊ณผ ๋์ฝ๋๊ฐ ๋ณต์กํจ | symbol-based ECC, ์ ์ฅยทํต์ , Chipkill ์ค๊ณ |
| LDPC | soft bit ๋๋ ์ฌ๋ณผ ์ ๋ขฐ๋ | ๋ฎ์ ์ค๋ฅ์จ์์ ๋์ ์ ์ ์ฑ๋ฅ | ๋ฐ๋ณต ๋์ฝ๋ฉ, soft ์ ๋ณด์ ํฐ ํ๋์จ์ด | TLC/QLC NAND, ๊ณ ์ค๋ฅ ์ฑ๋ |
| RAID-6 ๊ณ์ด | ๋์คํฌ ๋ธ๋ก | ๋์คํฌ ๋จ์ ์๊ฑฐ ๋ณต๊ตฌ | ๋์คํฌ ์คํธ๋ผ์ดํ์ ์ฌ๊ตฌ์ฑ ๋น์ฉ | ์ ์ฅ์ฅ์น์ P/Q ํจ๋ฆฌํฐ |
RS Code์ Chipkill์ ๊ฐ์ ๊ฐ๋ ์ด ์๋๋๋ค. RS๋ ์ ํ์ฒด ์์์ ์ ์ ๋ฅ๋ ฅ์ ์ ์ํ๋ ์ฝ๋์ด๊ณ , Chipkill์ ํ๋์ DRAM ์นฉ ๋๋ device failure๋ฅผ ๊ฒฌ๋๊ธฐ ์ํด ์ฝ๋์ ์นฉ ๋ฐฐ์นยท์ธํฐ๋ฆฌ๋นยท์ปจํธ๋กค๋ฌ ๋์์ ๊ฒฐํฉํ ์์คํ ์ํคํ ์ฒ์ ๋๋ค. Chipkill ๊ตฌํ์ด ํญ์ RS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ์๋๋ฉฐ, XOR ๊ธฐ๋ฐ ๋ค์ฐจ์ ํจ๋ฆฌํฐ๋ ๋ค๋ฅธ symbol-based code๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ค๋ฅ ๋ชจ๋ธ๋ณ ์ ํฉ์ฑ
| ์ค๋ฅ ๋ชจ๋ธ | SECDED | RS Code | ์ค๊ณ์ ํต์ฌ |
|---|---|---|---|
| ๋จ์ผ bit upset | ์ ํฉ | ๊ฐ๋ฅํ์ง๋ง ๊ณผํ ํธ | ๋ฎ์ ์ง์ฐ์ด๋ฉด Hamming/Hsiao ์ ํธ |
| ๊ฐ์ ์ฌ๋ณผ ์์ ์ฌ๋ฌ bit ์ค๋ฅ | ์ ํ์ | ์ฌ๋ณผ ํ๋๋ก ์ ์ ๊ฐ๋ฅ | ์ฌ๋ณผ ํญ์ ์ค๋ฅ ์ ๋์ ๋ง์ถฐ์ผ ํจ |
| ์ฌ๋ฌ ์ฌ๋ณผ์ burst ์ค๋ฅ | ์ ํ์ | ํจ๋ฆฌํฐ ์์ฐ ์์์ ๊ฐํจ | interleaving์ผ๋ก ์ค๋ฅ ๋ถ์ฐ ๋๋ ์ง์ค ์ ์ด |
| ์์น๋ฅผ ์๋ ์์ ์ฌ๋ณผ | ์ ํ์ | ์๊ฑฐ ์ ์ ์ผ๋ก ํจ์จ์ | CRC, timeout, device status ๋ฑ ์์น ์ ๋ณด ํ์ |
| x4 DRAM device failure | ๊ธฐ๋ณธ SECDED๋ง์ผ๋ก ๋ถ์กฑ | ์ถฉ๋ถํ ์๊ฑฐ ์ฌ์ ๊ฐ ์์ผ๋ฉด ๊ฐ๋ฅ | chip-to-symbol ๋งคํ๊ณผ rank ํญ์ด ๊ฒฐ์ |
| ์ธ๋์ ยท๋์ ์ค๋ฅ | scrub๊ณผ ์กฐํฉ ํ์ | scrub๊ณผ ์กฐํฉ ํ์ | ์ฝ๋๋ณด๋ค RAS ์ ์ฑ ๊ณผ ๊ต์ฒด ํ๊ณ๊ฐ ์ค์ |
์ฝ๋์จ๊ณผ ๋น์ฉ์ ๊ท ํ
ํจ๋ฆฌํฐ ์ฌ๋ณผ์ ๋๋ฆฌ๋ฉด n-k๊ฐ ์ปค์ ธ ์ค๋ฅ์ ์๊ฑฐ ์ ์ ๋ฅ๋ ฅ์ด ๋์์ง์ง๋ง, ์ ์ฅ ์ฉ๋ยท๋ฒ์ค ํญยท์ฐ๊ธฐ ์๋์งยท๋์ฝ๋ ๋ฉด์ ์ด ํจ๊ป ์ฆ๊ฐํฉ๋๋ค. ๊ฐ์ ์ฝ๋์จ์ด๋ผ๋ m, ์ฝ๋์๋ ๊ธธ์ด, ๋ณ๋ ฌ ์ฒ๋ฆฌ ํญ์ ๋ฐ๋ผ ๋น์ฉ์ด ๋ฌ๋ผ์ง๋ฏ๋ก RS(255,223)์ ์ซ์๋ฅผ ์์ DRAM ๋ด๋ถ ์ฝ๋์ ๊ทธ๋๋ก ์ ์ฉํ๋ฉด ์ ๋ฉ๋๋ค.
| ์ ํ ๋ฐฉํฅ | ์ป๋ ๊ฒ | ์ง๋ถํ๋ ๊ฒ |
|---|---|---|
k/n์ ๋์ |
๋ฎ์ ํจ๋ฆฌํฐ ์ค๋ฒํค๋, ๋์ ์ ํจ ๋์ญํญ | ์์ ์ค๋ฅ ์ฌ์ , Chipkill ๋์ ์ถ์ |
n-k๋ฅผ ๋๋ฆผ |
์ค๋ฅยท์๊ฑฐ ์ ์ ์ฌ์ ํ๋ | ํจ๋ฆฌํฐ ์ ์ฅยท์ ์ก ๋ฐ GF ์ฐ์ฐ ์ฆ๊ฐ |
์ฌ๋ณผ m์ ํค์ |
ํ ์ฌ๋ณผ์ด ๋ ๋ง์ bit๋ฅผ ํฌํจ | GF multiplier์ ์ฝ๋์๋ ๊ตฌํ ๋ณต์ก๋ ์ฆ๊ฐ |
| interleaving์ ๊ฐํ | burst ์ค๋ฅ๋ฅผ ์ฌ๋ฌ ์ฝ๋์๋๋ก ๋ถ์ฐ | ์ฃผ์ ๋งคํ, ๋ฒํผ, ์ค๋ฅ ์์น ์ถ์ ์ฆ๊ฐ |
์ค๋ฅ์ ์๊ฑฐ๋ฅผ ๊ตฌ๋ถํ๋ ์ ๋ ฅ ๊ฒฝ๋ก
RS ๋์ฝ๋๊ฐ ๋ฐ๋ ์ฌ๋ณผ์๋ ๊ฐ๋ฟ ์๋๋ผ ์ ๋ขฐ๋์ ์์น ์ ๋ณด๊ฐ ์ค์ํฉ๋๋ค. ๋จ์ํ 0x00์ ๋ฐ์ ๊ฒ๊ณผ "์ด ์ฌ๋ณผ์ ์ฅ์น ์ฅ์ ๋ก ์ ๋ขฐํ ์ ์์"์ ๋ฐ์ ๊ฒ์ ๊ฐ์ ๊ฐ์ด์ง๋ง ์๋ก ๋ค๋ฅธ ๋์ฝ๋ฉ ๋ฌธ์ ์
๋๋ค.
| ์ ๋ ฅ ์ํ | ๋์ฝ๋ ์ ๋ณด | ํจ๋ฆฌํฐ ์์ฐ ์๋น | ๊ฐ๋ฅํ ์ถ์ฒ |
|---|---|---|---|
| ์ ์ ์ฌ๋ณผ | ๊ฐ๋ง ์ ํจ | 0 | ์ ์ read |
| ๋ฏธ์ง ์ค๋ฅ | ๊ฐ์ด ํ๋ ธ์ง๋ง ์์น ๋ชจ๋ฆ | 2 | random bit upset, ๊ฒ์ถ๋์ง ์์ bus ์ค๋ฅ |
| ์๊ฑฐ | ์์น์ ์์ ์ฌ์ค์ ์ | 1 | timeout, CRC, device-fail, lane flag |
| ํผํฉ | e๊ฐ ์ค๋ฅ์ s๊ฐ ์๊ฑฐ |
2e+s |
device failure์ bit upset ๋์ ๋ฐ์ |
์๊ฑฐ ํ๋๊ทธ๋ ์ ์ ๋ฅ๋ ฅ์ ๋๋ ค ์ฃผ์ง๋ง, ์์น ์ ๋ณด๊ฐ ํ๋ฆฌ๋ฉด ์ ์ ์ฌ๋ณผ์ ์๋ชป ๋ฒ๋ฆฌ๊ฑฐ๋ ์๋ชป๋ codeword๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก device ID, CRC, timeout, training ์ํ ๋ฑ ์๊ฑฐ๋ฅผ ์์ฑํ๋ ๊ฒฝ๋ก๋ RAS ๊ด์ ์์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
๋์ ์๋ฆฌ
์ธ์ฝ๋ฉ: ๋ฐ์ดํฐ ์ฌ๋ณผ์์ ํจ๋ฆฌํฐ ์์ฑ
- ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๊ฐ ๋ณดํธํ ๋ฐ์ดํฐ ๋ธ๋ก์
k๊ฐ์m๋นํธ ์ฌ๋ณผ๋ก ๋๋๋๋ค. - ์์คํ
์ด ์ ํ ์ ํ์ฒด ํํ๊ณผ ์์ฑ ๋คํญ์
g(x)๋ฅผ ์ฌ์ฉํฉ๋๋ค. - systematic ๋ฐฉ์์์๋ ๋ฐ์ดํฐ ๋คํญ์
M(x)์x^(n-k)๋ฅผ ๊ณฑํ ๋คg(x)๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํฉ๋๋ค. - ๊ทธ ๋๋จธ์ง๋ฅผ ํจ๋ฆฌํฐ ์ฌ๋ณผ๋ก ๋ถ์ฌ
n์ฌ๋ณผ ์ฝ๋์๋C(x)๋ฅผ ๋ง๋ญ๋๋ค. - ์์ฑ๋ ์ฝ๋์๋๋
g(x)๋ก ๋๋์์ ๋ ๋๋จธ์ง๊ฐ 0์ด ๋๋์ง ๊ฒ์ฌํด ์ธ์ฝ๋ ๊ตฌํ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ณ๋ ฌ LFSR ์ธ์ฝ๋
์์ฑ ๋คํญ์์ ๊ณ์๋ r๊ฐ์ field register๋ฅผ ๊ฐ์ง ํผ๋๋ฐฑ ์ํํธ ๋ ์ง์คํฐ๋ก ๊ตฌํํ ์ ์์ต๋๋ค. ๋งค ์
๋ ฅ ์ฌ๋ณผ๋ง๋ค ํ์ฌ ๋ ์ง์คํฐ์ ๋ง์ง๋ง ๊ฐ๊ณผ ์
๋ ฅ ์ฌ๋ณผ์ XORํ feedback์ ๋ง๋ค๊ณ , g(x)์ ๊ณ์์ feedback์ GF ๊ณฑ์
ํ ๊ฐ์ ๊ฐ register์ ์ฃผ์
ํฉ๋๋ค.
input symbol -> feedback = input XOR register[r-1]
-> GF multiply by g_i
-> register shift/update
์ค์ ๋ฉ๋ชจ๋ฆฌ ์ธํฐํ์ด์ค๋ ํ ๋ฒ์ ์ฌ๋ฌ ์ฌ๋ณผ์ ๋ฐ์์ผ ํ๋ฏ๋ก, ์ด ์ง๋ ฌ LFSR๋ฅผ ๊ทธ๋๋ก ๋ณต์ ํ๊ธฐ๋ณด๋ค ์ฌ๋ฌ ๋จ๊ณ์ ๋ณ๋ ฌ ์ ๊ฐ์์ผ๋ก ํฉ์ฑํฉ๋๋ค. ๋ณ๋ ฌ ํญ์ด ์ปค์ง์๋ก XOR fan-in๊ณผ GF multiplier ์๊ฐ ์ฆ๊ฐํ๊ณ , ํ์ดํ๋ผ์ธ์ ๋ฃ์ผ๋ฉด throughput์ ๋์์ง์ง๋ง codeword ๋จ์ latency์ flush ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์ธ์ฝ๋ ๊ฒ์ฆ์ ์ต์ ์กฐ๊ฑด์ ๋ค์ ์ธ ๊ฐ์ง์ ๋๋ค.
- all-zero ๋ฐ ๋จ์ผ non-zero ์ฌ๋ณผ ์
๋ ฅ์์
C(x) mod g(x)=0์ธ์ง ํ์ธํฉ๋๋ค. - ๋์ผํ field polynomial, root sequence, symbol order๋ฅผ ์ฌ์ฉํ๋ reference model๊ณผ ๋ฐ์ดํฐยทํจ๋ฆฌํฐ๋ฅผ ๋น๊ตํฉ๋๋ค.
- shortened code์์๋ ์๋ตํ leading zero ์ฌ๋ณผ์ด parity ๊ณ์ฐ์๋ ํฌํจ๋๊ณ ์ธํฐํ์ด์ค์๋ ํฌํจ๋์ง ์๋์ง ํ์ธํฉ๋๋ค.
์์ฑ ๋คํญ์์ ๋ณดํต ์ ํ์ฒด์ ์ฐ์๋ ๊ฑฐ๋ญ์ ๊ณฑ ์์๋ฅผ ๊ทผ(root)์ผ๋ก ๊ฐ๋๋ก ๊ตฌ์ฑํ์ง๋ง, ์์ ์ง์์ ์ฌ๋ณผ ์์๋ ํ๋กํ์ผ๋ง๋ค ๋ค๋ฅผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋์ฝ๋๋ ๋จ์ํ RS(n,k)๋ผ๋ ์ด๋ฆ๋ง ์์์๋ ์ ๋๊ณ , m, field polynomial, root sequence, n, k, shortening ์ฌ๋ถ๋ฅผ ๋์ผํ๊ฒ ์์์ผ ํฉ๋๋ค.
๋์ฝ๋ฉ: syndrome์์ ์ฌ๋ณผ ๋ณด์ ๊น์ง
์์ ์ฝ๋์๋๋ฅผ R(x) = C(x) + E(x)๋ก ๋๋ฉด, ์์ฑ ๋คํญ์์ ๊ทผ์ ๋์
ํ syndrome์ ์ ์ก๋ ์ ์ ์ฝ๋์๋๊ฐ ์๋๋ผ ์ค๋ฅ ๋คํญ์์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
- ์์ ์ฌ๋ณผ๊ณผ ์ค๋ฅ ์์น ์ ๋ณด๋ฅผ ๋ฒํผ์ ์ ์ฅํฉ๋๋ค.
S_i = R(alpha^(b+i))ํํ์ syndrome์n-k๊ฐ ๊ณ์ฐํฉ๋๋ค.b๋ ์์ฑ ๋คํญ์์ ์์ ์ง์์ ๋๋ค.- ๋ชจ๋ syndrome์ด 0์ด๋ฉด ์ ํจ ์ฝ๋์๋๋ก ํต๊ณผ์ํค๊ณ , 0์ด ์๋๋ฉด ์ค๋ฅยท์๊ฑฐ ์ฒ๋ฆฌ๋ก ์งํํฉ๋๋ค.
- Berlekamp-Massey ๋๋ extended Euclidean algorithm์ผ๋ก error-locator polynomial์ ๊ณ์ฐํฉ๋๋ค.
- Chien search๋ก locator polynomial์ ๊ทผ์ ์ฐพ์ ์ค๋ฅ ์ฌ๋ณผ ์์น๋ฅผ ๊ตฌํฉ๋๋ค.
- Forney algorithm ๋๋ ๋๋ฑํ ์์ผ๋ก ๊ฐ ์ค๋ฅ ์์น์ error magnitude๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์ค๋ฅ ๊ฐ์ ์ฌ๋ณผ์ ์ ์ฉํ๊ณ , syndrome์ ์ฌ๊ณ์ฐํด ์ ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
- ํ๊ณ๋ฅผ ๋๊ฑฐ๋ ๊ฒ์ฆ์ ์คํจํ๋ฉด UE(Uncorrectable Error)๋ก ๋ณด๊ณ ํ๊ณ , ๋ฐ์ดํฐ ์ ๋ฌยท์ฌ์๋ยทํ์ด์ง ๊ฒฉ๋ฆฌ ์ฌ๋ถ๋ฅผ ์์ RAS ์ ์ฑ ์ ๋งก๊น๋๋ค.
Locator์ evaluator ๋คํญ์
v๊ฐ์ ์ค๋ฅ ์์น๋ฅผ X_l๋ก ๋ํ๋ด๋ฉด ์ค๋ฅ ์์น ๋คํญ์์ ๋ค์์ฒ๋ผ ์ ์ํ ์ ์์ต๋๋ค.
Lambda(x) = product(l=1..v) (1 - X_l x)
์๊ฑฐ ์์น๋ฅผ ์๊ณ ์๋ค๋ฉด ์๊ฑฐ ์์น ๋คํญ์ Gamma(x)๋ฅผ ๋จผ์ ๋ง๋ค๊ณ syndrome์ ๋ฐ์ํฉ๋๋ค.
Gamma(x) = product(j in erasures) (1 - X_j x)
modified syndrome = Gamma(x) * S(x) mod x^r
๊ทธ ๋ค์ Berlekamp-Massey ๋๋ extended Euclidean algorithm์ syndrome๊ณผ locator/evaluator ์ฌ์ด์ key equation์ ํ๋๋ค.
Lambda(x) * S(x) = Omega(x) mod x^r
Chien search๋ ๊ฐ๋ฅํ field point๋ฅผ ์ํํ๋ฉฐ Lambda(X^-1)=0์ธ ์ง์ ์ ์ฐพ์ต๋๋ค. Forney algorithm์ ํด๋น ์ง์ ์ evaluator์ locator ๋ฏธ๋ถ๊ฐ์ผ๋ก ์ค๋ฅ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
Y_l = -Omega(X_l^-1) / Lambda'(X_l^-1)
์ ์์ ์ง์ ๋ฐฉํฅ, X_l์ ์ ์, ๋ถํธ๋ ๊ตฌํ convention์ ๋ฐ๋ผ ๋ฐ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋
ผ๋ฌธ์ด๋ RTL์ ์์์ ๊ทธ๋๋ก ๋ณต์ฌํ๊ธฐ๋ณด๋ค encoder์ root sequence์ reference decoder๋ฅผ ํจ๊ป ๋น๊ตํด์ผ ํฉ๋๋ค.
| ๋ด๋ถ ๊ฐ | ์๋ฏธ | ๊ตฌํ ๊ฒ์ฆ ํฌ์ธํธ |
|---|---|---|
S_i |
์์ codeword์ root ํ๊ฐ ๊ฒฐ๊ณผ | ์ ์ codeword์์ ์ ๋ถ 0 |
Gamma(x) |
์๋ ค์ง ์๊ฑฐ ์์น์ ๊ณฑ | erasure ์์น ์์์ ๋ฌด๊ดํด์ผ ํจ |
Lambda(x) |
์ค๋ฅ์ ์๊ฑฐ ์์น๋ฅผ ์ฐพ๋ locator | degree๊ฐ ์ค์ ์์ ์์ ์ผ์น |
Omega(x) |
์ค๋ฅ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๋ evaluator | key equation์ ๋๋จธ์ง ์ฐจ์ ์ ํ |
| Chien roots | ์ฌ๋ณผ ์์น | codeword index์ ์ญ์ convention ํ์ธ |
Forney Y_l |
ํด๋น ์ฌ๋ณผ์ ๋ํ ์ค๋ฅ ํฌ๊ธฐ | correction ๋ค syndrome ์ฌ๊ฒ์ฆ |
์ค๋ฅ ๊ฐ์๊ฐ ํ๊ณ๋ฅผ ๋์ผ๋ฉด locator์ ๊ทผ์ด ๋ถ์กฑํ๊ฑฐ๋ Forney ๋ถ๋ชจ๊ฐ 0์ด ๋๋ ๋ฑ ๋ด๋ถ ์คํจ๊ฐ ๋ํ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ๋ค์ค ์ค๋ฅ๋ ์ฐ์ฐํ ์ ํจํ ๋ค๋ฅธ codeword๋ก ๋ณด์ผ ์ ์์ผ๋ฏ๋ก, syndrome ์ฌ๊ฒ์ฆ๋ง์ผ๋ก ๋ชจ๋ silent miscorrection์ ๋ง์ ์ ์๋ค๊ณ ๊ฐ์ ํด์๋ ์ ๋ฉ๋๋ค. CRC, ๋ณ๋ parity, metadata ์ ๋ขฐ๋์ RAS ์ ์ฑ ์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฆผ 2. algebraic RS ๋์ฝ๋๋ syndrome์์ ์๊ฑฐ locator์ key equation์ ๋ง๋ค๊ณ , Lambda/Omega ๋คํญ์์ rootยทmagnitude๋ฅผ ๊ณ์ฐํ ๋ค syndrome ์ฌ๊ฒ์ฆ์ ํต๊ณผํ ๊ฒฝ์ฐ์๋ง CE๋ก ํ์ ํ๋ค.
์๊ฑฐ๋ฅผ ํฌํจํ ๋์ฝ๋ฉ
DRAM ์ปจํธ๋กค๋ฌ๊ฐ ํน์ device๊ฐ ์๋ตํ์ง ์์๊ฑฐ๋, ๋งํฌ CRCยทtimeoutยท๋ด๋ถ ์ํ ๋นํธ๋ก ํน์ ์ฌ๋ณผ์ ์ ๋ขฐํ ์ ์๋ค๊ณ ํ๋จํ๋ฉด ํด๋น ์์น๋ฅผ erasure๋ก ๋๊ธธ ์ ์์ต๋๋ค. ์ด๋ ์์น๊ฐ ์ด๋ฏธ ์๋ ค์ก์ผ๋ฏ๋ก locator ํ์์ ํ์ํ ์ ๋ณด๊ฐ ์ค์ด๋ค๊ณ , ์ ์ ์์ฐ์ ๋ค์ ์กฐ๊ฑด์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
2e + s <= n - k
์๋ฅผ ๋ค์ด n-k=8์ธ ์ฝ๋์์ ์๋ ค์ง์ง ์์ ์ค๋ฅ 2๊ฐ์ ์๋ ค์ง ์๊ฑฐ 4๊ฐ๊ฐ ์๋ค๋ฉด 2*2+4=8์ด๋ฏ๋ก ์ด๋ก ์ ์ธ ์ ์ ํ๊ณ ์์ ์์ต๋๋ค. ๋ฐ๋ฉด ์ค๋ฅ 4๊ฐ๋ 2*4=8์ด์ด์ ์๊ฑฐ๊ฐ ์ถ๊ฐ๋ ์ฌ์ง๊ฐ ์์ต๋๋ค. ์ด ๊ณ์ฐ์ ๋
๋ฆฝ์ ์ธ ์ฌ๋ณผ ์ค๋ฅ ๋ชจ๋ธ์ ์ ์ ๋ก ํ๋ฉฐ, ์ค์ ์์คํ
์์๋ ์๋ชป๋ ์ค๋ฅ ์์น ํ์, ์ค๋ฅ ๊ฒ์ถ ์คํจ, ๋์ผ ์ฌ๊ฑด์ ๋ค์ค ์ฝ๋์๋ ๋ถํฌ๊น์ง ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋์ฝ๋๋ ๋ณดํต ๋ค์ ์์๋ก ์์ฐ์ ๋จผ์ ํ์ธํฉ๋๋ค.
- ์๋ ค์ง ์๊ฑฐ ์
s๊ฐr๋ณด๋ค ํฌ๋ฉด ์ฆ์ UE๋ก ๋ถ๋ฅํฉ๋๋ค. - ์๊ฑฐ๋ฅผ ์ ์ธํ ํ๋ณด ์ค๋ฅ ์๋ฅผ locator ์ฐจ์์ ๋น๊ตํฉ๋๋ค.
2e+s <= r์ ๋ง์กฑํ์ง ์์ผ๋ฉด ์ ์ ์๋๋ฅผ ์ค๋จํ๊ฑฐ๋ ์์ ๊ณ์ธต ์ฌ์๋๋ก ๋ณด๋ ๋๋ค.- ์กฐ๊ฑด ์์ ์์ด๋ Chien root ์, Forney magnitude, syndrome ์ฌ๊ฒ์ฆ์ด ๋ชจ๋ ์ฑ๊ณตํด์ผ CE๋ก ํ์ ํฉ๋๋ค.
์ด ์ฌ์ ํ์ ์ ๋ถํ์ํ GF ์ฐ์ฐ์ ์ค์ด์ง๋ง, e๋ ์์น๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก๋ ์ถ์ ๊ฐ์ ๋ถ๊ณผํฉ๋๋ค. ์ต์ข
ํ์ ์ locator์ ์ ์ ํ syndrome ๊ฐ์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค.
DRAM ์ฌ๋ณผ ๋งคํ๊ณผ Chipkill
symbol-based DRAM ECC์ ๋ฐ์ดํฐ ๊ฒฝ๋ก๋ ๋๋ต ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค.
CPU cache line
-> address mapping / interleaving
-> DRAM devices (x4, x8, ...)
-> symbol assembly
-> RS encoder / decoder
-> data + parity devices or lanes
์ค๊ณ ์ ํ์ธํ ํญ๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ๋ณผ ํญ: x4 device์ ํ ์ถ๋ ฅ์ด 4๋นํธ ์ฌ๋ณผ์ธ์ง, ์ฌ๋ฌ beat๋ฅผ ํฉ์น ๋ ผ๋ฆฌ ์ฌ๋ณผ์ธ์ง ์ ์
- ์ฝ๋์๋ ๋ฒ์: ํ burst, cache line, rank ์ ๊ทผ ๋๋ ์ฌ๋ฌ ์ฑ๋ ์ ๊ทผ ์ค ๋ฌด์์ ํ๋์
RS(n,k)๋ก ๋ฌถ๋์ง ์ ์ - ์ฅ์ ๋ณํ: device timeout์ด๋ lane ์ค๋ฅ๋ฅผ ์ด๋ค ์ฌ๋ณผ ์์น์ erasure๋ก ๋ฐ๊พธ๋์ง ์ ์
- ์ธํฐ๋ฆฌ๋น: ํ ์นฉ ์ฅ์ ๊ฐ ํ ์ฝ๋์๋์ ์์ ์ฌ๋ณผ์ ์ง์ค๋๋์ง, ์ฌ๋ฌ ์ฝ๋์๋์ ๋ถ์ฐ๋๋์ง ํ์ธ
- ํจ๋ฆฌํฐ ๋ฐฐ์น: ๋ฐ์ดํฐ์ parity๋ฅผ ์ด๋ deviceยทrankยทchannel์ ๋์ง ๊ฒฐ์
- RAS ๊ฒฝ๋ก: CE(Correctable Error), UE, syndrome, device ID๋ฅผ ๊ธฐ๋กํ๊ณ scrubยทspareยทretire ์ ์ฑ ์ ์ฐ๊ฒฐ
ํ x4 ์นฉ์ ๋ชจ๋ ์ถ๋ ฅ์ด ํ๋์ cache line์ ํฌํจ๋๋๋ผ๋ ์ฝ๋์๋์ ์ฌ๋ณผ ์์ ๋ฐฐ์น๊ฐ ์ถฉ๋ถํ์ง ์์ผ๋ฉด ๋ณต๊ตฌํ ์ ์์ต๋๋ค. ๋ฐ๋๋ก ์นฉ ์ฅ์ ๋ฅผ ์ฌ๋ฌ ์ฝ๋์๋์ ์ ๋ถ์ฐํ๋ฉด ๊ฐ ์ฝ๋์๋๊ฐ ์ ์ ํ๊ณ๋ฅผ ๋์ง ์๊ฒ ๋ง๋ค ์ ์์ง๋ง, ์ปจํธ๋กค๋ฌ ๋ฒํผ์ ์ฃผ์ ๋งคํ์ ๋ณต์กํด์ง๋๋ค. ์ด ๋๋ฌธ์ Chipkill์ ๋ณด์ฅ ๋ฒ์๋ RS(n,k)์ ์ด๋ฆ๋ณด๋ค ์ค์ device-failure ๋ชจ๋ธ๊ณผ ์ฌ๋ณผ ๋ฐฐ์น ๋ฌธ์๋ก ํ๋จํด์ผ ํฉ๋๋ค.
device failure๋ฅผ ์ฌ๋ณผ ์ค๋ฅ๋ก ๋ฒ์ญํ๊ธฐ
ํ device ์ฅ์ ๊ฐ ์ฝ๋์๋์์ s_d๊ฐ์ ์ฌ๋ณผ์ ์๊ฒ ๋ง๋ ๋ค๊ณ ํ๊ฒ ์ต๋๋ค. ์ปจํธ๋กค๋ฌ๊ฐ ํด๋น ์์น๋ฅผ ์ ํํ ์๋ฉด ๋ค์ ์กฐ๊ฑด์ด ํ์ํฉ๋๋ค.
s_d <= n-k (known device erasure)
์ฅ์ ์์น๋ฅผ ์ ์ ์๊ณ ๋ชจ๋ ๋ฏธ์ง ์ค๋ฅ๋ก ์ทจ๊ธํ๋ฉด ๋ณด์์ ์ผ๋ก ๋ค์ ์์ฐ์ ์๋นํฉ๋๋ค.
2 * s_d <= n-k (unknown symbol errors)
๋ฐ๋ผ์ ๊ฐ์ RS ํ๋ผ๋ฏธํฐ๋ผ๋ x4/x8 device ํญ, burst๋น ์ ์ก beat, rank interleave, spare lane ๋ฐฐ์น์ ๋ฐ๋ผ Chipkill ๋ณด์ฅ ์ฌ๋ถ๊ฐ ๋ฌ๋ผ์ง๋๋ค.
| ๋ฌผ๋ฆฌ ์ฌ๊ฑด | ๋ ผ๋ฆฌ ์ ๋ ฅ | ์ค๊ณ ์ง๋ฌธ |
|---|---|---|
| ํ bit upset | ํ ์ฌ๋ณผ์ ๋ฏธ์ง ์ค๋ฅ | ์ฌ๋ณผ ํญ ์์ ๋จธ๋ฌด๋๊ฐ? |
| ์ธ์ bit burst | ํ๋ ์ฌ๋ณผ ๋๋ ์ฌ๋ฌ ์ฌ๋ณผ ์ค๋ฅ | interleaving์ด ์ฌ๊ฑด์ ์ด๋ป๊ฒ ๋ถ์ฐํ๋๊ฐ? |
| x4 device offline | ์ฌ๋ฌ ์์น์ ์๊ฑฐ | ํ codeword๊ฐ ์๋ s_d๋ ์ผ๋ง์ธ๊ฐ? |
| lane/๋งํฌ CRC ์ค๋ฅ | ์๋ ค์ง ์์น์ ์๊ฑฐ ํ๋ณด | CRC๊ฐ ์ค์ ์ฌ๋ณผ ์์น๊น์ง ๋ณด์กดํ๋๊ฐ? |
| ์ฌ๋ฌ device ๋์ ์ฅ์ | ๋ค์ ์๊ฑฐ ๋๋ ์ค๋ฅ | 2e+s๊ฐ codeword๋ณ๋ก ํ๊ณ ์์ธ๊ฐ? |
4-bit ์ฌ๋ณผ RS์ DDR5 ์ ์ฉ ๊ด์
m=4์ธ RS Code๋ GF(16) ์์์ ๋์ํ๊ณ , ๊ฐ ์ฌ๋ณผ์ด 4๋นํธ์
๋๋ค. x4 DRAM device์ ์์ฐ์ค๋ฌ์ด ์ถ๋ ฅ ํญ๊ณผ ๋ง์ถ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ์ผ๋ฐ์ ์ธ primitive ๊ตฌ์ฑ์์ ํ ์ฝ๋์๋์ ์ฌ๋ณผ ์๊ฐ 2^4-1=15๋ฅผ ๋์ง ์๋๋ค๋ ์ ์ฝ์ด ์์ต๋๋ค. ๋ ๊ธด ๋ณดํธ ๋ฒ์๊ฐ ํ์ํ๋ฉด ์ฌ๋ฌ ์ฝ๋์๋, shortening, ๋ค๋ฅธ ์ฌ๋ณผ ํญ ๋๋ ๋ณ๋ interleaving์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
2025๋ ICTC์๋ 4-bit symbol Reed-Solomon์ ์ด์ฉํ DDR5 Chipkill-level ECC๋ฅผ ๋ค๋ฃฌ ์ฐ๊ตฌ๊ฐ ๋ฐํ๋์์ต๋๋ค. ์ด ์ฐ๊ตฌ๋ ํน์ ๊ตฌํยทํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ํ๋ ์ฐ๊ตฌ ์ฌ๋ก์ด์ง JEDEC DDR5 ๋ชจ๋ ์ ์ฒด์ ๊ณตํต ํ์ ๊ตฌํ์ ์๋ฏธํ์ง ์์ต๋๋ค. DDR5์ on-die ECC๋ DRAM ๋ค์ด ๋ด๋ถ ์ ์ฅ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ณ๋ ๊ณ์ธต์ด๋ฏ๋ก, ์ธ๋ถ RS ๊ธฐ๋ฐ ECC๋ Chipkill ์ค๊ณ๋ฅผ ์๋์ผ๋ก ๋์ฒดํ์ง ์์ต๋๋ค.
RAS ๋ฐ Linux ์ค๋ฅ ๋ณด๊ณ ์ฐ๊ณ
RS ๋์ฝ๋๊ฐ ์ฌ๋ณผ์ ์ ์ ํ๋ ๊ฒ๊ณผ ์์คํ ์ด ๊ทธ ์ฌ๊ฑด์ ์ด์ ๊ฐ๋ฅํ ์ค๋ฅ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ณ๊ฐ์ ๊ธฐ๋ฅ์ ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ์ดํฐ, parity, ๋งํฌ ์ํ์ device ์ํ๋ฅผ ์์งํฉ๋๋ค.
- RS ๋์ฝ๋๊ฐ ์ค๋ฅ ๋๋ ์๊ฑฐ๋ฅผ ์ ์ ํ๊ณ syndrome๊ณผ ์์น๋ฅผ ๋ฐํํฉ๋๋ค.
- ์ ์ ๋ ์ฌ๊ฑด์ CE ์นด์ดํฐ์ ์ฃผ์ยทdevice ์์น์ ๊ธฐ๋กํฉ๋๋ค.
- ํ๊ณ๋ฅผ ๋์ ์ฌ๊ฑด์ UE ๋๋ fatal ๊ฒฝ๋ก๋ก ๋ณด๋ด๋ฉฐ, ์ฌ์๋ยทpoisoningยทํ์ด์ง offlining์ ์ ์ฑ ์ ๋ฐ๋ผ ์ํํฉ๋๋ค.
- ์ ์ ๋ cache line์ patrol scrub์ผ๋ก ๋ค์ ๊ธฐ๋กํด ๊ฐ์ ์์น์ ์ค๋ฅ๊ฐ ๋์ ๋์ง ์๋๋ก ํ ์ ์์ต๋๋ค.
Linux EDAC์ ๋ฉ๋ชจ๋ฆฌ controller ๊ณ์ธต, CE/UE ์ ํ, syndrome๊ณผ ์ค๋ฅ ์์น๋ฅผ ๋ณด๊ณ ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค๋ง ์ด์์ฒด์ ๊ฐ ํน์ RS ํ๋ ฌ์ ์๋์ผ๋ก ์๊ณ ์ ์ ํ๋ ๊ฒ์ ์๋๋ฉฐ, ์ปจํธ๋กค๋ฌยทํ์จ์ด๊ฐ ์ ๊ณตํ๋ ์ค๋ฅ ๋ถ๋ฅ์ ์์น ์ ๋ณด๊ฐ EDAC์ ์ ๋ฌ๋ฉ๋๋ค.
๋์ฝ๋ ๊ตฌํ ๊ตฌ์กฐ์ ์ฑ๋ฅ
| ๊ตฌ์กฐ | ์ฅ์ | ๋น์ฉ๊ณผ ์ฃผ์์ |
|---|---|---|
| ์์ ๋ณ๋ ฌ syndrome/Chien | ํ codeword๋ฅผ ์งง์ latency๋ก ์ฒ๋ฆฌ | GF multiplier, ๋น๊ต๊ธฐ, ๋ฐฐ์ ๋ฉด์ ์ฆ๊ฐ |
| folded/iterative | ๋ฉด์ ๊ณผ ์ ๋ ฅ ์ ๊ฐ | ์ฌ๋ฌ cycle latency, throughput ์ ํ |
| table ๊ธฐ๋ฐ GF ์ฐ์ฐ | ์ค๊ณ๊ฐ ๋จ์ํ๊ณ ๊ฒ์ฆ์ด ์ฌ์ | ROM ๋ฉด์ , table access latency, 0 ์์ธ |
| ํ์ดํ๋ผ์ธ BM/EEA | ๊ธด codeword์์ ๋์ throughput | backpressure, codeword ๊ฒฝ๊ณ, flush ๊ด๋ฆฌ |
| erasure ์ ์ฉ ๋ณด์กฐ ๊ฒฝ๋ก | device failure ๋ณต๊ตฌ์ ์ ๋ฆฌ | ์ ํํ device/lane ์์น metadata ํ์ |
๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๋ ์ฝ๊ธฐ latency๋ฟ ์๋๋ผ ์ฐ์ burst์ ์ฒ๋ฆฌ์จ๋ ๋ง์กฑํด์ผ ํฉ๋๋ค. ํ codeword์ ์ ์ ์ด ๋๋๊ธฐ ์ ์ ๋ค์ codeword๊ฐ ๋ค์ด์ค๋ฉด syndrome ๊ณ์ฐ, locator ๊ณ์ฐ, correction write-back ์ฌ์ด์ ๋ฒํผ๊ฐ ํ์ํฉ๋๋ค. ์ค๋ฅ๊ฐ ์๋ fast path๋ S=0 ํ์ ํ ์งง๊ฒ ํต๊ณผ์ํค๊ณ , ์ค๋ฅ๊ฐ ์๋ slow path๋ง BM/Chien/Forney๋ก ๋ณด๋ด๋ ๊ตฌ์กฐ๊ฐ ์ ๋ ฅ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
๊ฒ์ฆ ํญ๋ชฉ
RS IP๋ ์ ์ ๋ฐ์ดํฐ ๋ช ๊ฐ๋ฅผ ๋น๊ตํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ ๊ฒ์ฆ๋์ง ์์ต๋๋ค. ๋ค์ ํ ์คํธ๋ฅผ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค.
e=0,s=0๋ถํฐ2e+s=r๊น์ง ๋ชจ๋ ์ค๋ฅยท์๊ฑฐ ์กฐํฉ์ ์ฃผ์ ํฉ๋๋ค.2e+s=r+1์ธ ๊ฒฝ๊ณ ์ด๊ณผ ์กฐํฉ์ UE, retry ๋๋ ์ ์ฑ ์ ๋ง๋ ์คํจ๋ก ๋ถ๋ฅ๋๋์ง ํ์ธํฉ๋๋ค.- ๋ชจ๋ ์ฌ๋ณผ ๊ฐ, 0 ์ฌ๋ณผ, ์ต๋ field element, ์ฐ์ burst๋ฅผ ํฌํจํฉ๋๋ค.
- codeword ์ฒซยท๋ง์ง๋ง ์์น์ shortened code์ ์๋ต ์์ญ์ ๋ณ๋๋ก ์ํํฉ๋๋ค.
- device failure๊ฐ ์ฌ๋ฌ codeword์ ๋ถ์ฐ๋ ๋ codeword๋ณ
s๋ฅผ ๊ณ์ฐํด Chipkill ์ฃผ์ฅ์ ๊ฒ์ฆํฉ๋๋ค. - RTL ๊ฒฐ๊ณผ๋ฅผ ๋ ๋ฆฝ์ ์ธ GF reference model ๋ฐ ๋ค๋ฅธ ์ธ์ด ๊ตฌํ๊ณผ ๋น๊ตํฉ๋๋ค.
- ์ ์ ์ฝ๋์๋์ฒ๋ผ ๋ณด์ด๋ ์ค์ ์ ๊ฐ๋ฅ์ฑ์ CRC ๋๋ metadata๋ก ํ์งํ๋ ๊ฒฝ๋ก๋ฅผ ์ํํฉ๋๋ค.
์ฅ๋จ์
| ์ฅ์ | ํ๊ณ์ ์ฃผ์์ |
|---|---|
| ์ฌ๋ณผ ๋จ์ ์ค๋ฅ์ burst ์ค๋ฅ์ ๊ฐํจ | bit ์ค๋ฅ๊ฐ ์ฌ๋ฌ ์ฌ๋ณผ๋ก ํผ์ง๋ฉด ์ ์ ์์ฐ์ ๋น ๋ฅด๊ฒ ์๋ชจ |
| ์ค๋ฅ ์์น๋ฅผ ์๋ ์๊ฑฐ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉ | ์ ํํ erasure ์์น ์ ๋ณด๊ฐ ํ์ |
n-k๋ก ์ค๋ฅยท์๊ฑฐ ์ ์ ์ฌ์ ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ฌ์ |
ํจ๋ฆฌํฐ ์ฌ๋ณผ ์ฆ๊ฐ์ ๋ฐ๋ผ ์ ์ฅยท์ ์ก ์ค๋ฒํค๋ ์ฆ๊ฐ |
| MDS ์ฑ์ง๋ก ์์์ ์ถฉ๋ถํ ์ ์ ์ฌ๋ณผ์์ ๋ณต๊ตฌ ๊ฐ๋ฅ | GF multiplier, locator ํ์, magnitude ๊ณ์ฐ์ผ๋ก ํ๋์จ์ด ๋ณต์ก๋ ์ฆ๊ฐ |
| ์ฌ๋ณผ์ DRAM device ํญ์ ๋ง์ถฐ ์นฉ ์ฅ์ ๋ชจ๋ธ๊ณผ ๊ฒฐํฉ ๊ฐ๋ฅ | RS Code๋ง์ผ๋ก Chipkill, spare, scrub, ์ค๋ฅ ๋ณด๊ณ ๊ฐ ์์ฑ๋์ง ์์ |
| systematicยทshortened ๊ตฌ์ฑ์ผ๋ก ๋ค์ํ ๋ธ๋ก ํฌ๊ธฐ์ ์ ์ฉ ๊ฐ๋ฅ | field polynomial, root sequence, ์ฌ๋ณผ ์์๊ฐ ๋ค๋ฅด๋ฉด ์ํธ ์ด์ฉ ๋ถ๊ฐ |
RS Code์ ์ค๋ฌด์ ์ธ ์ฅ์ ์ ๋จ์ํ "๊ฐํ ECC"๋ผ๋ ๋ฐ ์์ง ์์ต๋๋ค. ์ค๋ฅ ์์น๋ฅผ ์ ์ ์๋ ์์คํ
์์๋ ๊ฐ์ parity๋ก ๋ ํฐ device failure๋ฅผ ๋ณต๊ตฌํ ์ ์๊ณ , ์ฌ๋ณผ ๊ฒฝ๊ณ๋ฅผ ๋ฌผ๋ฆฌ ์ค๋ฅ ์
๋์ ๋ง์ถ๋ฉด burst์ ์นฉ ์ฅ์ ๋ฅผ ํ๋์ ์ ๋์ ์์ฐ์ผ๋ก ๋ถ์ํ ์ ์๋ค๋ ์ ์ด ํต์ฌ์
๋๋ค. ๋ฐ๋๋ก ์ฌ๋ณผ ๋งคํ์ด๋ erasure metadata๊ฐ ๋ฌธ์ํ๋์ง ์์ ์ํ์์ n-k๋ง ๋ณด๊ณ Chipkill์ ์ฃผ์ฅํ๋ฉด ๋ณดํธ ๋ฒ์๋ฅผ ๊ณผ๋ํ๊ฐํ ์ํ์ด ์์ต๋๋ค.
๊ด๋ จ ๊ธฐ์
๊ด๋ จ ๋ฌธ์
- ECC Error Correction: bit ๋จ์ SECDED์ DRAM ECC ๊ณ์ธต์ ๊ธฐ๋ณธ ์๋ฆฌ
- Hsiao Code: ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ์ฉ SECDED ํ๋ ฌ ์ต์ ํ์ RS Code์์ ์ฐจ์ด
- DRAM ํ ์คํธ/์ ๋ขฐ์ฑ: ECC, Chipkill, scrubbing, ์ค๋ฅ ๋ชจ๋ธ
- DDR ๋ด๋ถ ๊ตฌ์กฐ: rankยทchannelยทdevice ๋ฐฐ์น์ DRAM ๋ฐ์ดํฐ ๊ฒฝ๋ก
- NAND ECC ๊ณ ๊ธ: BCHยทLDPC์ soft/hard decoding ๋น๊ต
- NAND ์๋ฌ ๊ด๋ฆฌ: ๋ค์ด ์ฅ์ , ECC, read retry์ ๋ฐ์ดํฐ ๋ณต๊ตฌ
- RAID ๊ธฐ์ : ๋์คํฌ ์๊ฑฐ ๋ณต๊ตฌ์ RS ๊ณ์ด P/Q ํจ๋ฆฌํฐ
- ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ: ECCยท์ค์ผ์ค๋งยท์ค๋ฅ ๊ด๋ฆฌ๊ฐ ์ฐ๊ฒฐ๋๋ ์์คํ ๋ธ๋ก
์ฐธ๊ณ ๋ฌธํ
| ๊ตฌ๋ถ | ์๋ฃ |
|---|---|
| ์ ๋ ผ๋ฌธ | I. S. Reed and G. Solomon, "Polynomial Codes over Certain Finite Fields", SIAM Journal of Applied Mathematics, 1960 |
| ํ์คํ๋ RS FEC | RFC 5510: Reed-Solomon Forward Error Correction (FEC) Schemes, IETF, 2009 |
| FEC ํ๋ ์์ํฌ | RFC 5052: Forward Error Correction (FEC) Building Block, IETF, 2007 |
| DRAM ์ฐ๊ตฌ | T. Ha et al., "Chipkill-Level ECC Using 4-Bit Symbol Reed-Solomon Codes for DDR5 DRAM", ICTC, 2025 |
| Chipkill ์ฐ๊ตฌ | X. Jian and R. Kumar, "Adaptive Reliability Chipkill Correct (ARCC)", HPCA, 2013 |
| ๋ค์ฐจ์ parity | X. Jian et al., "High Performance, Energy Efficient Chipkill Correct Memory with Multidimensional Parity", IEEE Computer Architecture Letters, 2013 |
| ์ด์ ์ธํฐํ์ด์ค | Linux EDAC documentation: memory device ํญ, CE/UE, syndrome์ Chipkill ๊ด๋ จ ์ ํ |
| ๋ฉ๋ชจ๋ฆฌ ํ์ค | JEDEC JESD79-5: DDR5 SDRAM ํ์ค |
| ๊ต๊ณผ์ | S. Lin and D. J. Costello, Error Control Coding, 2nd ed.: finite-field code์ RS ๋์ฝ๋ฉ ์ด๋ก |
| ๊ตฌํ ์ฐธ๊ณ | R. E. Blahut, Theory and Practice of Error Control Codes: syndrome, locator, evaluator ๊ธฐ๋ฐ ๋์ฝ๋ |
ํต์ฌ ์ ๋ฆฌ
Reed-Solomon Code๋ GF(2^m)์ ์ฌ๋ณผ์ ์ฌ์ฉํ๋ MDS ๋ธ๋ก ์ฝ๋์ด๋ฉฐ, n-k๊ฐ์ ํจ๋ฆฌํฐ ์ฌ๋ณผ๋ก ์ค๋ฅยท์๊ฑฐ ์ ์ ์ฌ์ ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์๋ ค์ง์ง ์์ ์ฌ๋ณผ ์ค๋ฅ e๊ฐ์ ์๋ ค์ง ์๊ฑฐ s๊ฐ๋ 2e+s <= n-k ๋ฒ์์์ ์ ์ ํ ์ ์๊ณ , ์ด ํน์ฑ์ burst ์ค๋ฅ์ device ์ฅ์ ๋ชจ๋ธ์ ์ ๋ฆฌํฉ๋๋ค. ์ผ๋ฐ DDR์ ๊ธฐ๋ณธ ์ธ๋ถ ECC๋ Hamming/Hsiao SECDED๊ฐ ๋ ํํ์ง๋ง, RS Code๋ ์ฌ๋ณผ์ ์ฌ๋ฌ DRAM ์นฉ์ ๋ถ์ฐํ๋ symbol-based ECC์ Chipkill ์ค๊ณ์ ๊ธฐ๋ฐ ํ๋ณด๊ฐ ๋ ์ ์์ต๋๋ค. ์ค์ ๋ณด์ฅ ๋ฒ์๋ RS ์์๋ง์ผ๋ก ๊ฒฐ์ ๋์ง ์์ผ๋ฉฐ, ์ฌ๋ณผ ํญยท์ฝ๋์๋ ๋ฒ์ยทinterleavingยทerasure ์์น ์ ๋ณดยทRAS ์ ์ฑ
์ ํจ๊ป ๊ฒ์ฆํด์ผ ํฉ๋๋ค.