๐Ÿง  DRAM

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"๋ผ๋„ ์„œ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RS codeword and symbol error correction

๊ทธ๋ฆผ 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 ๊ด€์ ์—์„œ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘ ์›๋ฆฌ

์ธ์ฝ”๋”ฉ: ๋ฐ์ดํ„ฐ ์‹ฌ๋ณผ์—์„œ ํŒจ๋ฆฌํ‹ฐ ์ƒ์„ฑ

  1. ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ณดํ˜ธํ•  ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ k๊ฐœ์˜ m๋น„ํŠธ ์‹ฌ๋ณผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
  2. ์‹œ์Šคํ…œ์ด ์ •ํ•œ ์œ ํ•œ์ฒด ํ‘œํ˜„๊ณผ ์ƒ์„ฑ ๋‹คํ•ญ์‹ g(x)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. systematic ๋ฐฉ์‹์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋‹คํ•ญ์‹ M(x)์— x^(n-k)๋ฅผ ๊ณฑํ•œ ๋’ค g(x)๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ทธ ๋‚˜๋จธ์ง€๋ฅผ ํŒจ๋ฆฌํ‹ฐ ์‹ฌ๋ณผ๋กœ ๋ถ™์—ฌ n์‹ฌ๋ณผ ์ฝ”๋“œ์›Œ๋“œ C(x)๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  5. ์ƒ์„ฑ๋œ ์ฝ”๋“œ์›Œ๋“œ๋Š” 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 ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฝ”๋” ๊ฒ€์ฆ์˜ ์ตœ์†Œ ์กฐ๊ฑด์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  1. all-zero ๋ฐ ๋‹จ์ผ non-zero ์‹ฌ๋ณผ ์ž…๋ ฅ์—์„œ C(x) mod g(x)=0์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ๋™์ผํ•œ field polynomial, root sequence, symbol order๋ฅผ ์‚ฌ์šฉํ•˜๋Š” reference model๊ณผ ๋ฐ์ดํ„ฐยทํŒจ๋ฆฌํ‹ฐ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  3. 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์€ ์ „์†ก๋œ ์ •์ƒ ์ฝ”๋“œ์›Œ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์˜ค๋ฅ˜ ๋‹คํ•ญ์‹์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

  1. ์ˆ˜์‹  ์‹ฌ๋ณผ๊ณผ ์˜ค๋ฅ˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. S_i = R(alpha^(b+i)) ํ˜•ํƒœ์˜ syndrome์„ n-k๊ฐœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. b๋Š” ์ƒ์„ฑ ๋‹คํ•ญ์‹์˜ ์‹œ์ž‘ ์ง€์ˆ˜์ž…๋‹ˆ๋‹ค.
  3. ๋ชจ๋“  syndrome์ด 0์ด๋ฉด ์œ ํšจ ์ฝ”๋“œ์›Œ๋“œ๋กœ ํ†ต๊ณผ์‹œํ‚ค๊ณ , 0์ด ์•„๋‹ˆ๋ฉด ์˜ค๋ฅ˜ยท์†Œ๊ฑฐ ์ฒ˜๋ฆฌ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. Berlekamp-Massey ๋˜๋Š” extended Euclidean algorithm์œผ๋กœ error-locator polynomial์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  5. Chien search๋กœ locator polynomial์˜ ๊ทผ์„ ์ฐพ์•„ ์˜ค๋ฅ˜ ์‹ฌ๋ณผ ์œ„์น˜๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  6. Forney algorithm ๋˜๋Š” ๋™๋“ฑํ•œ ์‹์œผ๋กœ ๊ฐ ์˜ค๋ฅ˜ ์œ„์น˜์˜ error magnitude๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  7. ์˜ค๋ฅ˜ ๊ฐ’์„ ์‹ฌ๋ณผ์— ์ ์šฉํ•˜๊ณ , syndrome์„ ์žฌ๊ณ„์‚ฐํ•ด ์ •์ • ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  8. ํ•œ๊ณ„๋ฅผ ๋„˜๊ฑฐ๋‚˜ ๊ฒ€์ฆ์— ์‹คํŒจํ•˜๋ฉด 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 ์ •์ฑ…์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RS decoding pipeline

๊ทธ๋ฆผ 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์ด์–ด์„œ ์†Œ๊ฑฐ๊ฐ€ ์ถ”๊ฐ€๋  ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ณ„์‚ฐ์€ ๋…๋ฆฝ์ ์ธ ์‹ฌ๋ณผ ์˜ค๋ฅ˜ ๋ชจ๋ธ์„ ์ „์ œ๋กœ ํ•˜๋ฉฐ, ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ž˜๋ชป๋œ ์˜ค๋ฅ˜ ์œ„์น˜ ํ‘œ์‹œ, ์˜ค๋ฅ˜ ๊ฒ€์ถœ ์‹คํŒจ, ๋™์ผ ์‚ฌ๊ฑด์˜ ๋‹ค์ค‘ ์ฝ”๋“œ์›Œ๋“œ ๋ถ„ํฌ๊นŒ์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋””์ฝ”๋”๋Š” ๋ณดํ†ต ๋‹ค์Œ ์ˆœ์„œ๋กœ ์˜ˆ์‚ฐ์„ ๋จผ์ € ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ์•Œ๋ ค์ง„ ์†Œ๊ฑฐ ์ˆ˜ s๊ฐ€ r๋ณด๋‹ค ํฌ๋ฉด ์ฆ‰์‹œ UE๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ์†Œ๊ฑฐ๋ฅผ ์ œ์™ธํ•œ ํ›„๋ณด ์˜ค๋ฅ˜ ์ˆ˜๋ฅผ locator ์ฐจ์ˆ˜์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  3. 2e+s <= r์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ์ •์ • ์‹œ๋„๋ฅผ ์ค‘๋‹จํ•˜๊ฑฐ๋‚˜ ์ƒ์œ„ ๊ณ„์ธต ์žฌ์‹œ๋„๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  4. ์กฐ๊ฑด ์•ˆ์— ์žˆ์–ด๋„ 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 ๋””์ฝ”๋”๊ฐ€ ์‹ฌ๋ณผ์„ ์ •์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ์‹œ์Šคํ…œ์ด ๊ทธ ์‚ฌ๊ฑด์„ ์šด์˜ ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ณ„๊ฐœ์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  1. ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฐ์ดํ„ฐ, parity, ๋งํฌ ์ƒํƒœ์™€ device ์ƒํƒœ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  2. RS ๋””์ฝ”๋”๊ฐ€ ์˜ค๋ฅ˜ ๋˜๋Š” ์†Œ๊ฑฐ๋ฅผ ์ •์ •ํ•˜๊ณ  syndrome๊ณผ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ •์ •๋œ ์‚ฌ๊ฑด์€ CE ์นด์šดํ„ฐ์™€ ์ฃผ์†Œยทdevice ์œ„์น˜์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  4. ํ•œ๊ณ„๋ฅผ ๋„˜์€ ์‚ฌ๊ฑด์€ UE ๋˜๋Š” fatal ๊ฒฝ๋กœ๋กœ ๋ณด๋‚ด๋ฉฐ, ์žฌ์‹œ๋„ยทpoisoningยทํŽ˜์ด์ง€ offlining์„ ์ •์ฑ…์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  5. ์ •์ •๋œ 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๋Š” ์ •์ƒ ๋ฐ์ดํ„ฐ ๋ช‡ ๊ฐœ๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ฒ€์ฆ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. e=0, s=0๋ถ€ํ„ฐ 2e+s=r๊นŒ์ง€ ๋ชจ๋“  ์˜ค๋ฅ˜ยท์†Œ๊ฑฐ ์กฐํ•ฉ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  2. 2e+s=r+1์ธ ๊ฒฝ๊ณ„ ์ดˆ๊ณผ ์กฐํ•ฉ์€ UE, retry ๋˜๋Š” ์ •์ฑ…์— ๋งž๋Š” ์‹คํŒจ๋กœ ๋ถ„๋ฅ˜๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ชจ๋“  ์‹ฌ๋ณผ ๊ฐ’, 0 ์‹ฌ๋ณผ, ์ตœ๋Œ€ field element, ์—ฐ์† burst๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  4. codeword ์ฒซยท๋งˆ์ง€๋ง‰ ์œ„์น˜์™€ shortened code์˜ ์ƒ๋žต ์˜์—ญ์„ ๋ณ„๋„๋กœ ์‹œํ—˜ํ•ฉ๋‹ˆ๋‹ค.
  5. device failure๊ฐ€ ์—ฌ๋Ÿฌ codeword์— ๋ถ„์‚ฐ๋  ๋•Œ codeword๋ณ„ s๋ฅผ ๊ณ„์‚ฐํ•ด Chipkill ์ฃผ์žฅ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  6. RTL ๊ฒฐ๊ณผ๋ฅผ ๋…๋ฆฝ์ ์ธ GF reference model ๋ฐ ๋‹ค๋ฅธ ์–ธ์–ด ๊ตฌํ˜„๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  7. ์ •์ƒ ์ฝ”๋“œ์›Œ๋“œ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์˜ค์ •์ • ๊ฐ€๋Šฅ์„ฑ์„ 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์„ ์ฃผ์žฅํ•˜๋ฉด ๋ณดํ˜ธ ๋ฒ”์œ„๋ฅผ ๊ณผ๋Œ€ํ‰๊ฐ€ํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ๊ธฐ์ˆ 

๊ด€๋ จ ๋ฌธ์„œ

์ฐธ๊ณ  ๋ฌธํ—Œ

๊ตฌ๋ถ„ ์ž๋ฃŒ
์› ๋…ผ๋ฌธ 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 ์ •์ฑ…์„ ํ•จ๊ป˜ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.