๐Ÿง  DRAM

Hsiao Code

๊ฐœ์š”

Hsiao Code๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” SECDED(Single-Error Correction, Double-Error Detection) ์ฝ”๋“œ๋ฅผ ํ•˜๋“œ์›จ์–ด ๊ตฌํ˜„์— ๋งž๊ฒŒ ๊ตฌ์„ฑํ•œ ์˜ค๋ฅ˜ ์ •์ • ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. M. Y. Hsiao๊ฐ€ 1970๋…„์— ์ œ์•ˆํ•œ ํ•ต์‹ฌ์€ ํ™•์žฅ Hamming ์ฝ”๋“œ์™€ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ณด์žฅ ์ˆ˜์ค€๊ณผ ๊ฒ€์‚ฌ ๋น„ํŠธ ์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ, ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ ํ–‰๋ ฌ์˜ ์—ด์„ ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜(odd weight) ๋ฒกํ„ฐ๋กœ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์„ ํƒ์€ syndrome์„ ๋งŒ๋“œ๋Š” XOR ๋„คํŠธ์›Œํฌ์˜ ์ด ์ž…๋ ฅ ์ˆ˜์™€ ๋ฐฐ์„ ๋Ÿ‰์„ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Hsiao Code์˜ ์ดˆ์ ์€ ๋” ๋งŽ์€ ์˜ค๋ฅ˜๋ฅผ ์ •์ •ํ•˜๋Š” ๋ฐ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ตฌ์„ฑ์€ ๋‹จ์ผ ๋น„ํŠธ ์˜ค๋ฅ˜๋ฅผ ์ •์ •ํ•˜๊ณ  ์ด์ค‘ ๋น„ํŠธ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ถœํ•˜๋Š” SECDED์ด๋ฉฐ, ๋ฐ์ดํ„ฐ ํญ๊ณผ ๊ฒ€์‚ฌ ๋น„ํŠธ ์ˆ˜์— ๋งž์ถฐ ํ–‰๋ ฌ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Hsiao Code๋Š” DRAM ์…€์˜ ๋ฌผ๋ฆฌ์  ์˜ค๋ฅ˜๋ฅผ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๋Š” DDR5 on-die ECC์™€ ๋™์ผํ•œ ๊ธฐ์ˆ ์ด ์•„๋‹ˆ๋ผ, ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ์˜ side-band ECC ๊ฐ™์€ ์‹œ์Šคํ…œ ์ˆ˜์ค€ ECC๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ ์„ค๊ณ„ ์„ ํƒ์œผ๋กœ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Hsiao Code parity-check matrix and decoder

๊ทธ๋ฆผ 1. Hsiao ๋ฐฉ์‹์€ ๊ฐ ์—ด์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๋‚ฎ์ถ˜ ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ ํ–‰๋ ฌ๊ณผ syndrome ๋ถ„๋ฅ˜๋ฅผ ์ด์šฉํ•ด SECDED ๋””์ฝ”๋”์˜ ์กฐํ•ฉ ๋…ผ๋ฆฌ๋ฅผ ์ค„์ธ๋‹ค. ๊ทธ๋ฆผ์˜ ํ–‰๋ ฌ ๋น„ํŠธ๋Š” 72๊ฐœ ์—ด ์ „์ฒด๊ฐ€ ์•„๋‹Œ ๋Œ€ํ‘œ ์—ด์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

SECDED์™€ ์ฝ”๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ

์ด ๋ฌธ์„œ์—์„œ H๋Š” ์ด์ง„ ์œ ํ•œ์ฒด GF(2) ์œ„์˜ ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ ํ–‰๋ ฌ์ด๊ณ , ์ˆ˜์‹  ์ฝ”๋“œ์›Œ๋“œ๋ฅผ r์ด๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

s = H * r^T

์ฝ”๋“œ์›Œ๋“œ๊ฐ€ ์œ ํšจํ•˜๋ฉด s = 0์ž…๋‹ˆ๋‹ค. ํ•œ ๋น„ํŠธ ์˜ค๋ฅ˜๊ฐ€ ์œ„์น˜ i์—์„œ ๋ฐœ์ƒํ•˜๋ฉด syndrome์€ H์˜ i๋ฒˆ์งธ ์—ด h_i๊ฐ€ ๋˜๊ณ , ๋‘ ๋น„ํŠธ ์˜ค๋ฅ˜๊ฐ€ i, j์—์„œ ๋ฐœ์ƒํ•˜๋ฉด h_i XOR h_j๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์—ด์ด ์„œ๋กœ ๋‹ค๋ฅด๋ฉด ๋‘ ๋‹จ์ผ ์˜ค๋ฅ˜๊ฐ€ ๊ฐ™์€ syndrome์œผ๋กœ ํ•ฉ์ณ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

k๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋น„ํŠธ์™€ r๊ฐœ์˜ ๊ฒ€์‚ฌ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Hsiao ๊ตฌ์„ฑ์€ ์ด n = k + r๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜ ์—ด์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๊ธธ์ด r์ธ ์ด์ง„ ๋ฒกํ„ฐ ์ค‘ ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜ ๋ฒกํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” 2^(r-1)์ด๋ฏ€๋กœ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

k + r <= 2^(r - 1)

64๋น„ํŠธ ๋ฐ์ดํ„ฐ ์›Œ๋“œ์˜ ๊ฒฝ์šฐ r = 8์ด ์ฒ˜์Œ์œผ๋กœ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. r = 7์ด๋ฉด 64 + 7 = 71๊ฐœ ์—ด์ด ํ•„์š”ํ•˜์ง€๋งŒ ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜ 7๋น„ํŠธ ๋ฒกํ„ฐ๋Š” 64๊ฐœ๋ฟ์ด๊ณ , r = 8์ด๋ฉด 72๋น„ํŠธ ์ฝ”๋“œ์›Œ๋“œ์— 128๊ฐœ ํ›„๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์„œ๋ฒ„ DIMM์—์„œ ์ต์ˆ™ํ•œ 64 data + 8 check = 72 bits ๊ตฌ์„ฑ์ด Hsiao SECDED์˜ ๋Œ€ํ‘œ ์˜ˆ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Odd-weight-column ํ–‰๋ ฌ

Hsiao์˜ ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ ํ–‰๋ ฌ์€ ๋‹ค์Œ ์กฐ๊ฑด์„ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ์—ด์€ 0์ด ์•„๋‹Œ ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜ ๋ฒกํ„ฐ์ž…๋‹ˆ๋‹ค.
  2. ๋ชจ๋“  ์—ด์€ ์„œ๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  3. ๊ตฌํ˜„ ๋ชฉ์ ์— ๋งž๊ฒŒ ๊ฐ€๋Šฅํ•œ ๋‚ฎ์€ ๊ฐ€์ค‘์น˜์˜ ์—ด์„ ์šฐ์„  ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ด ์กฐ๊ฑด์ด SECDED ๋ถ„๋ฅ˜๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋‹จ์ผ ์˜ค๋ฅ˜์˜ syndrome h_i๋Š” ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค.
  • ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜ ์—ด์„ XORํ•œ ๊ฐ’์€ 0์ด ์•„๋‹Œ ์ง์ˆ˜ ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ syndrome์˜ ํ™€์ง๋งŒ ํ™•์ธํ•ด๋„ ๋‹จ์ผ ์˜ค๋ฅ˜์™€ ์ด์ค‘ ์˜ค๋ฅ˜๋ฅผ 1์ฐจ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ™€์ˆ˜ ์—ด ์„ธ ๊ฐœ์˜ XOR๋Š” ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜์ด๋ฏ€๋กœ 0์ด ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋ฅผ 4 ์ด์ƒ์œผ๋กœ ๋งŒ๋“œ๋Š” ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์‹ค์ œ ๋””์ฝ”๋”๋Š” syndrome์˜ ํ™€์ง๋งŒ ๋ณด์ง€ ์•Š๊ณ , ํ™€์ˆ˜ syndrome์ด H์˜ ์–ด๋А ์—ด๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€๋„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋น„ํŠธ ์ด์ƒ ์˜ค๋ฅ˜๋Š” SECDED์˜ ๋ณด์žฅ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฏ€๋กœ, ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” syndrome์ด๋‚˜ ์ž˜๋ชป๋œ ๋‹ค์ค‘ ์˜ค๋ฅ˜ ํŒจํ„ด์€ uncorrectable๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ •์ฑ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

72,64 ๋Œ€ํ‘œ ๊ตฌ์„ฑ์˜ ์—ด ์„ ํƒ

k = 64, r = 8์ธ ๊ฒฝ์šฐ ํ›„๋ณด ์—ด์„ ๊ฐ€์ค‘์น˜๊ฐ€ ๋‚ฎ์€ ์ˆœ์„œ๋กœ ์„ ํƒํ•˜๋ฉด ๋Œ€ํ‘œ์ ์ธ ๋ถ„ํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ด ๊ฐ€์ค‘์น˜ ์„ ํƒ ์—ด ์ˆ˜ ํ–‰๋ ฌ 1์˜ ๊ฐœ์ˆ˜ ์˜๋ฏธ
1 8 8 ๊ฐ syndrome ์‹์— ํ•˜๋‚˜์”ฉ ๊ธฐ์—ฌํ•˜๋Š” ๋‹จ์œ„ ๋ฒกํ„ฐ
3 56 168 8๋น„ํŠธ ์ค‘ 3๊ฐœ๊ฐ€ 1์ธ ๋ฒกํ„ฐ ์ „์ฒด
5 8 40 72๊ฐœ ์—ด์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ์„ ํƒํ•˜๋Š” ์ผ๋ถ€ ๋ฒกํ„ฐ
ํ•ฉ๊ณ„ 72 216 ํ‰๊ท  ์—ด ๊ฐ€์ค‘์น˜ 3.0

์ด ํ‘œ๋Š” ํŠน์ • ์ƒ์šฉ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ณ ์ • ํ–‰๋ ฌ์„ ๋œปํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, Hsiao์˜ minimum odd-weight-column ์›๋ฆฌ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋Œ€ํ‘œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ฐ€์ค‘์น˜ ํ›„๋ณด๋ฅผ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋ฐฐ์น˜ํ•˜๊ณ  ํ–‰์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š”์ง€๋Š” ๋ฐ์ดํ„ฐ ํญ, ๋ฐฐ์น˜, ํƒ€์ด๋ฐ, ๊ฒ€์ฆ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hsiao Code์™€ ํ™•์žฅ Hamming Code

๋‘ ์ฝ”๋“œ๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํญ์— ๋Œ€ํ•ด ๊ฐ™์€ ์ˆ˜์˜ ๊ฒ€์‚ฌ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  SECDED ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐจ์ด๋Š” ์˜ค๋ฅ˜ ์ •์ • ๋Šฅ๋ ฅ๋ณด๋‹ค H๋ฅผ ํ•˜๋“œ์›จ์–ด์— ์–ด๋–ค ๋ชจ์–‘์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋А๋ƒ์— ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ ํ™•์žฅ Hamming Hsiao Code
๋Œ€ํ‘œ 64๋น„ํŠธ ๊ตฌ์„ฑ 72๋น„ํŠธ ์ฝ”๋“œ์›Œ๋“œ 72๋น„ํŠธ ์ฝ”๋“œ์›Œ๋“œ
๊ฒ€์‚ฌ ๋น„ํŠธ ์ˆ˜ 8 8
์ตœ์†Œ ๊ฑฐ๋ฆฌ ๋ชฉํ‘œ 4 4
๋‹จ์ผ ์˜ค๋ฅ˜ ์ •์ • ์ •์ •
์ด์ค‘ ์˜ค๋ฅ˜ ๊ฒ€์ถœ ๊ฒ€์ถœ
์—ด ๊ตฌ์„ฑ ์œ„์น˜ ์ด์ง„๊ฐ’๊ณผ ์ „์ฒด ํŒจ๋ฆฌํ‹ฐ ๊ตฌ์กฐ ์„œ๋กœ ๋‹ค๋ฅธ ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜ ์—ด
์ตœ์ ํ™” ๊ธฐ์ค€ ๊ทœ์น™์„ฑ, ์„ค๋ช…๊ณผ ์ƒ์„ฑ์˜ ์šฉ์ด์„ฑ XOR ์ž…๋ ฅ ์ˆ˜, ๋ฐฐ์„ , ์ง€์—ฐ๊ณผ ๋น„์šฉ
๊ตฌํ˜„์ƒ ์ฃผ์˜ ํ–‰๋ ฌ์˜ ํŠน์ • ํ–‰์ด ํฐ fan-in์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ ํ–‰๋ ฌ ์„ ํƒ์— ๋”ฐ๋ฅธ row balance์™€ ๋งคํ•‘ ๊ฒ€์ฆ ํ•„์š”

๋Œ€ํ‘œ์ ์ธ 72 x 8 ํ–‰๋ ฌ์˜ ํ–‰๋ ฌ 1 ๊ฐœ์ˆ˜๋ฅผ ๋‹จ์ˆœ ๋น„๊ตํ•˜๋ฉด, ํ™•์žฅ Hamming์€ ํ‘œ์ค€ ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ ํ–‰๋ ฌ์˜ ์ „์ฒด ํŒจ๋ฆฌํ‹ฐ ํ–‰์— 72๊ฐœ ์—ด์„ ํฌํ•จํ•  ๋•Œ 285๊ฐœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ „์ฒด ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ ์ž์ฒด๋ฅผ ๋ณ„๋„ ์ƒ์„ฑ ์—ฐ๊ฒฐ๋กœ ์„ธ์ง€ ์•Š๋Š” ๊ตฌํ˜„ ํ‘œ๊ธฐ์—์„œ๋Š” 284๊ฐœ๋กœ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ minimum-weight Hsiao ์„ ํƒ์€ 216๊ฐœ์ด๋ฏ€๋กœ ํ–‰๋ ฌ ์—ฐ๊ฒฐ ์ˆ˜ ๊ธฐ์ค€ ์•ฝ 24% ์ฐจ์ด์ง€๋งŒ, ์‹ค์ œ ๊ฒŒ์ดํŠธ ์ˆ˜๋‚˜ ์„ฑ๋Šฅ์ด ๊ฐ™์€ ๋น„์œจ๋กœ ๊ฐœ์„ ๋œ๋‹ค๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. XOR ํŠธ๋ฆฌ ๊ตฌ์กฐ, ์…€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋ฐฐ์„  ๋ฐฐ์น˜, ํŒŒ์ดํ”„๋ผ์ธ, ํ•ฉ์„ฑ ์ œ์•ฝ์ด ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋น„๊ต/๋ถ„์„

ECC ์ฝ”๋“œ ์„ ํƒ ๋น„๊ต

์ฝ”๋“œ ๋˜๋Š” ๋ฐฉ์‹ ์˜ค๋ฅ˜ ๋‹จ์œ„ ๋Œ€ํ‘œ ๋ณด์žฅ ํ•˜๋“œ์›จ์–ด ๋น„์šฉ DRAM ์‹œ์Šคํ…œ์—์„œ์˜ ์—ญํ• 
Parity ๋น„ํŠธ ์˜ค๋ฅ˜ ๊ฒ€์ถœ ์ค‘์‹ฌ ๋‚ฎ์Œ ๋ช…๋ น/์ฃผ์†Œ ๋˜๋Š” ๋งํฌ ๋ณดํ˜ธ์˜ ์ผ๋ถ€
ํ™•์žฅ Hamming SECDED ๋น„ํŠธ 1๋น„ํŠธ ์ •์ •, 2๋น„ํŠธ ๊ฒ€์ถœ ์ค‘๊ฐ„ 64+8 side-band ECC์˜ ๊ธฐ๋ณธ ๋ชจ๋ธ
Hsiao SECDED ๋น„ํŠธ 1๋น„ํŠธ ์ •์ •, 2๋น„ํŠธ ๊ฒ€์ถœ ์ค‘๊ฐ„ ์ดํ•˜๋ฅผ ๋ชฉํ‘œ ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ XOR ๋…ผ๋ฆฌ ์ตœ์ ํ™”
BCH ๋น„ํŠธ ๋ธ”๋ก ๋‹ค์ค‘ ๋น„ํŠธ ์ •์ • ๋†’์Œ NAND ํ”Œ๋ž˜์‹œ์˜ ๊ฐ•ํ•œ ์˜ค๋ฅ˜ ์ •์ •
Reed-Solomon ์‹ฌ๋ณผ ์‹ฌ๋ณผ ์˜ค๋ฅ˜์™€ ์†Œ๊ฑฐ ์ •์ • ๋†’์Œ ์ €์žฅ์žฅ์น˜, ํ†ต์‹ , Chipkill ๊ณ„์—ด ์„ค๊ณ„
LDPC soft information ๊ธฐ๋ฐ˜ ๋น„ํŠธ/์‹ฌ๋ณผ ๋†’์€ ์ •์ • ๋Šฅ๋ ฅ ๋งค์šฐ ๋†’์Œ TLC/QLC NAND์™€ ๊ณ ์˜ค๋ฅ˜ ์ฑ„๋„
Chipkill ์‹œ์Šคํ…œ/์‹ฌ๋ณผ DRAM ์นฉ ๋‹จ์œ„ ์žฅ์•  ์™„ํ™” ๋†’์Œ ์—ฌ๋Ÿฌ DRAM ์นฉ์— ์‹ฌ๋ณผ์„ ๋ถ„์‚ฐํ•˜๋Š” ์„œ๋ฒ„ RAS

Hsiao Code๋Š” BCH, Reed-Solomon, LDPC์ฒ˜๋Ÿผ ์ •์ • ๋Šฅ๋ ฅ์„ ํ™•์žฅํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ™์€ SECDED ๋ณดํ˜ธ๋ฅผ ๋” ์งง์€ XOR ๊ฒฝ๋กœ์™€ ์ ์€ ์—ฐ๊ฒฐ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์„ ํƒ์ด๋ฉฐ, ์นฉ ์ „์ฒด ๊ณ ์žฅ์ด๋‚˜ ๋ฒ„์ŠคํŠธ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋Š” ๋ณ„๋„์˜ symbol-based ECC์™€ ๋ฉ”๋ชจ๋ฆฌ ์ธํ„ฐ๋ฆฌ๋น™์ด ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„ ๋น„์šฉ์„ ๋ณด๋Š” ์ง€ํ‘œ

Hsiao ํ–‰๋ ฌ์„ ํ‰๊ฐ€ํ•  ๋•Œ ๋‹จ์ˆœํžˆ ์—ด ๊ฐ€์ค‘์น˜์˜ ํ‰๊ท ๋งŒ ๋น„๊ตํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์ง€ํ‘œ ํ™•์ธํ•  ๋‚ด์šฉ ์„ค๊ณ„ ์˜ํ–ฅ
์ด ํ–‰๋ ฌ 1 ๊ฐœ์ˆ˜ ๋ชจ๋“  syndrome ์‹์— ์—ฐ๊ฒฐ๋˜๋Š” ์ž…๋ ฅ ์ˆ˜ XOR ๊ฒŒ์ดํŠธ์™€ ๋ฐฐ์„ ๋Ÿ‰์˜ 1์ฐจ ์ง€ํ‘œ
ํ–‰๋ณ„ ๊ฐ€์ค‘์น˜ ๊ฐ syndrome bit๊ฐ€ ์ฝ๋Š” ์ž…๋ ฅ ์ˆ˜ ์ตœ์žฅ XOR ๊ฒฝ๋กœ์™€ fan-in ๊ฒฐ์ •
์—ด๋ณ„ ๊ฐ€์ค‘์น˜ ํ•œ ๋ฐ์ดํ„ฐ bit๊ฐ€ ์ฐธ์—ฌํ•˜๋Š” ๊ฒ€์‚ฌ ์ˆ˜ ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ fan-out๊ณผ ๋ฐฐ์„  ๋ถ€ํ•˜ ๊ฒฐ์ •
syndrome ๋งคํ•‘ ์˜ค๋ฅ˜ ์œ„์น˜์™€ ์—ด์˜ ์ผ๋Œ€์ผ ๋Œ€์‘ correction mux์™€ ์˜ค๋ฅ˜ ์œ„์น˜ ๋””์ฝ”๋” ๋ณต์žก๋„ ๊ฒฐ์ •
row balance ํ–‰ ์‚ฌ์ด์˜ ์ž…๋ ฅ ์ˆ˜ ์ฐจ์ด ๋ณ‘๋ ฌ ํƒ€์ด๋ฐ๊ณผ ๋ฌผ๋ฆฌ ๋ฐฐ์น˜ ๊ท ํ˜•์— ์˜ํ–ฅ
์˜ค๋ฅ˜ ๋กœ๊น… CE, UE, syndrome ๋ณด์กด ์—ฌ๋ถ€ patrol scrub๊ณผ ์˜ˆ๋ฐฉ ๊ต์ฒด ์ •์ฑ…์— ์˜ํ–ฅ

๋‚ฎ์€ ์—ด ๊ฐ€์ค‘์น˜๋Š” ์ด ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐ ์œ ๋ฆฌํ•˜์ง€๋งŒ ๋ชจ๋“  ํ–‰์˜ fan-in์„ ์ž๋™์œผ๋กœ ์ตœ์†Œํ™”ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Hsiao Code๋ฅผ ์‹ค์ œ RTL๋กœ ์˜ฎ๊ธธ ๋•Œ์—๋Š” ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ™์€ ํ›„๋ณด ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๊ณ  row balance, ๋…ผ๋ฆฌ ๊นŠ์ด, ๋ฐฐ์„  ํ˜ผ์žก์„ ํ•จ๊ป˜ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ ํ–‰๋ ฌ๊ณผ systematic encoding

๊ฒ€์‚ฌ ์—ด ๊ฐ€์šด๋ฐ ๋‹จ์œ„ ๋ฒกํ„ฐ 8๊ฐœ๋ฅผ ๊ฒ€์‚ฌ ๋น„ํŠธ์— ํ• ๋‹นํ•˜๋ฉด ํ–‰๋ ฌ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด systematic form์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

H = [ A | I_8 ]

์—ฌ๊ธฐ์„œ A๋Š” 8 x 64 ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์ด๊ณ  I_8์€ ๊ฒ€์‚ฌ ๋น„ํŠธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ์›Œ๋“œ c = [D | P]๊ฐ€ H * c^T = 0์„ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ด์ง„ ์—ฐ์‚ฐ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒ€์‚ฌ ๋น„ํŠธ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

P = A * D^T       (๋ชจ๋“  ์—ฐ์‚ฐ์€ GF(2)์—์„œ XOR๋กœ ์ˆ˜ํ–‰)

Hsiao ๋ฐฉ์‹์˜ ์ฐจ์ด๋Š” ์ด ์‹์˜ ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ A๋ฅผ ์ด๋ฃจ๋Š” ์—ด์„ ์–ด๋–ค odd-weight ํ›„๋ณด๋กœ ์„ ํƒํ•˜๋Š”์ง€์— ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„๋ณด ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐœ๋…์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

def hsiao_columns(k):
    r = 1
    while k + r > (1 << (r - 1)):
        r += 1

    candidates = [x for x in range(1, 1 << r)
                  if x.bit_count() % 2 == 1]
    candidates.sort(key=lambda x: (x.bit_count(), x))
    return r, candidates[:k + r]

์ด ์ฝ”๋“œ๋Š” ํ–‰๋ ฌ์˜ ๋Œ€ํ‘œ์ ์ธ ์ตœ์†Œ ๊ฐ€์ค‘์น˜ ํ›„๋ณด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์„ค๋ช…์šฉ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ IP์—์„œ๋Š” ์—ฌ๊ธฐ์— ํ–‰๋ ฌ rank, ์ค‘๋ณต ์—ด, row balance, timing constraint, codeword bit mapping ๊ฒ€์ฆ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๋œ ํ›„๋ณด ์ค‘ ๊ฐ€์ค‘์น˜ 1์ธ 8๊ฐœ ์—ด์„ ๊ฒ€์‚ฌ ๋น„ํŠธ์— ํ• ๋‹นํ•˜๊ณ , ๋‚˜๋จธ์ง€ 64๊ฐœ ์—ด์„ ๋ฐ์ดํ„ฐ ๋น„ํŠธ์— ํ• ๋‹นํ•˜๋ฉด H = [A | I_8] ํ˜•ํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํ›„๋ณด ์—ด์˜ ์ˆœ์„œ์™€ ๋ฐ์ดํ„ฐยท๊ฒ€์‚ฌ ๋น„ํŠธ์˜ ์‹ค์ œ ์œ„์น˜๋Š” ์„œ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ตœ์ข… ๋งคํ•‘์—์„œ๋„ ์—ด ์ค‘๋ณต๊ณผ ์ตœ์†Œ ๊ฑฐ๋ฆฌ ์กฐ๊ฑด์„ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ๊ฒฝ๋กœ

  1. ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ 64๋น„ํŠธ ๋ฐ์ดํ„ฐ ์›Œ๋“œ D๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  2. ์„ ํƒํ•œ Hsiao ํ–‰๋ ฌ์˜ A ๋ถ€๋ถ„์œผ๋กœ 8๊ฐœ์˜ ๊ฒ€์‚ฌ ๋น„ํŠธ P๋ฅผ XOR ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฐ์ดํ„ฐ์™€ ๊ฒ€์‚ฌ ๋น„ํŠธ๋ฅผ 72๋น„ํŠธ ์ฝ”๋“œ์›Œ๋“œ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. ์ผ๋ฐ˜์ ์ธ ECC DIMM์—์„œ๋Š” 64๋น„ํŠธ ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ์™€ 8๋น„ํŠธ ECC ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” 72๋น„ํŠธ ๋ฒ„์Šค๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ DIMM์€ DRAM ์žฅ์น˜์˜ x4 ๋˜๋Š” x8 ํญ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋ณ‘๋ ฌ๋กœ ๋ฌถ์–ด ์ด ํญ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ–‰๋ ฌ์˜ ๊ฐ 1์€ ํ•˜๋‚˜์˜ XOR ์ž…๋ ฅ ์—ฐ๊ฒฐ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‚ฎ์€ ๊ฐ€์ค‘์น˜ ์—ด์„ ์„ ํƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ bit๊ฐ€ ์ฐธ์—ฌํ•˜๋Š” ๊ฒ€์‚ฌ์‹ ์ˆ˜์™€ ์ „์ฒด ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ systematic ๋ณ€ํ™˜๊ณผ ์‹ค์ œ ํ•€/์นฉ ๋งคํ•‘ ๋’ค์—๋Š” ํ–‰๋ ฌ์ด ๋‹ฌ๋ผ ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์„ค๊ณ„ ๋ฌธ์„œ์—๋Š” ๋…ผ๋ฆฌ ํ–‰๋ ฌ๊ณผ ๋ฌผ๋ฆฌ ๋ฐ์ดํ„ฐ lane ๋งคํ•‘์„ ๋ถ„๋ฆฌํ•ด ๊ธฐ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ๊ธฐ ๊ฒฝ๋กœ์™€ syndrome ๋ถ„๋ฅ˜

  1. ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ๊ฒ€์‚ฌ ๋น„ํŠธ๋ฅผ ํ•จ๊ป˜ ์ฝ์–ด ์ˆ˜์‹  ์ฝ”๋“œ์›Œ๋“œ r์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. s = H * r^T๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  3. s = 0์ด๋ฉด ์˜ค๋ฅ˜ ์—†์Œ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  4. s๊ฐ€ 0์ด ์•„๋‹ˆ๊ณ  ํ™€์ˆ˜ ๊ฐ€์ค‘์น˜์ด๋ฉฐ H์˜ ํ•œ ์—ด๊ณผ ์ผ์น˜ํ•˜๋ฉด ํ•ด๋‹น bit๋ฅผ ๋ฐ˜์ „ํ•ด 1๋น„ํŠธ ์˜ค๋ฅ˜๋ฅผ ์ •์ •ํ•ฉ๋‹ˆ๋‹ค.
  5. s๊ฐ€ 0์ด ์•„๋‹ˆ๊ณ  ์ง์ˆ˜ ๊ฐ€์ค‘์น˜์ด๋ฉด ๋‹จ์ผ ์˜ค๋ฅ˜๋กœ๋Š” ์„ค๋ช…ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ •์ •ํ•˜์ง€ ์•Š๊ณ  UE ํ›„๋ณด๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ๋‘ ๋น„ํŠธ ์˜ค๋ฅ˜์—์„œ๋Š” ๋‘ ๊ฐœ์˜ ํ™€์ˆ˜ ์—ด XOR๊ฐ€ ์ด๋Ÿฐ ์ง์ˆ˜ syndrome์„ ๋งŒ๋“ค์ง€๋งŒ, ์„ ํƒ๋œ ํ–‰๋ ฌ์˜ ๋ชจ๋“  ์ง์ˆ˜ ๋ฒกํ„ฐ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์‹ค์ œ ์—ด ์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  6. ์ •์ • ๊ฐ€๋Šฅ ์˜ค๋ฅ˜๋Š” CE(Correctable Error)๋กœ ๊ธฐ๋กํ•˜๊ณ , ์ •์ • ๋ถˆ๊ฐ€๋Šฅ ์˜ค๋ฅ˜๋Š” UE(Uncorrectable Error) ๊ฒฝ๋กœ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

ํŒ์ •ํ‘œ๋ฅผ ์“ฐ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

syndrome ๊ฐ€์ค‘์น˜ ํ•ด์„ ์ฒ˜๋ฆฌ
0 0 ์˜ค๋ฅ˜ ์—†์Œ ๋ฐ์ดํ„ฐ ํ†ต๊ณผ
H์˜ ์—ด๊ณผ ์ผ์น˜ ํ™€์ˆ˜ ๋‹จ์ผ bit ์˜ค๋ฅ˜ ํ•ด๋‹น bit ๋ฐ˜์ „, CE ๊ธฐ๋ก
0์ด ์•„๋‹Œ ๊ฐ’ ์ง์ˆ˜ ์ด์ค‘ bit ์˜ค๋ฅ˜ ํ›„๋ณด ์ •์ •ํ•˜์ง€ ์•Š๊ณ  UE ์ฒ˜๋ฆฌ
์—ด๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ํ™€์ˆ˜ ๊ฐ’ ํ™€์ˆ˜ SECDED ๋ฒ”์œ„๋ฅผ ๋„˜๋Š” ์˜ค๋ฅ˜ ํ›„๋ณด ๊ตฌํ˜„ ์ •์ฑ…์— ๋”ฐ๋ผ UE ๋˜๋Š” ์žฌ์‹œ๋„

์ด ๋ถ„๋ฅ˜๋Š” ์ตœ๋Œ€ ๋‘ ๋น„ํŠธ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๋ณด์žฅ์ž…๋‹ˆ๋‹ค. ์„ธ ๋น„ํŠธ ์˜ค๋ฅ˜์˜ syndrome์€ ํ™€์ˆ˜์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹จ์ผ ์˜ค๋ฅ˜๋กœ ์˜ค์ธ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ณ , ์ด๋ฅผ ํ•ญ์ƒ ๊ฒ€์ถœํ•˜๊ฑฐ๋‚˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ •์ •ํ•œ๋‹ค๊ณ  ๋งํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

DRAM ์ปจํŠธ๋กค๋Ÿฌ์™€ RAS ์—ฐ๊ณ„

Hsiao Code๋ฅผ ์ ์šฉํ•œ ์™ธ๋ถ€ ECC๋Š” ๋ณดํ†ต ๋‹ค์Œ RAS ํ๋ฆ„๊ณผ ํ•จ๊ป˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

DRAM read -> Hsiao syndrome -> correct / classify
                    |                 |
                    v                 v
              CE counter         UE handling
                    |
                    v
             patrol scrub / retire

๋‹จ์ผ bit ์˜ค๋ฅ˜๋ฅผ ์ •์ •ํ•œ ๋’ค ์›๋ž˜ ์œ„์น˜์— ์ •์ • ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ธฐ๋กํ•˜๋Š” patrol scrub์€ ๊ฐ™์€ cache line์— ์˜ค๋ฅ˜๊ฐ€ ๋ˆ„์ ๋˜๋Š” ๊ฒƒ์„ ์ค„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ scrub์€ ์ฝ”๋“œ์˜ ์ •์ • ๋Šฅ๋ ฅ์„ ๋†’์ด์ง€ ์•Š์œผ๋ฉฐ, DRAM ์นฉ ์ „์ฒด ์žฅ์• ๋ฅผ ๋ง‰์•„ ์ฃผ์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. x4 ์นฉ ๋‹จ์œ„ ์žฅ์• ๊นŒ์ง€ ๊ฒฌ๋””๋ ค๋ฉด ๋ฐ์ดํ„ฐ ์‹ฌ๋ณผ ๋ถ„์‚ฐ, lockstep, Chipkill๊ณผ ๊ฐ™์€ ๋” ๋„“์€ ์‹œ์Šคํ…œ ์„ค๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

On-die ECC์™€์˜ ๊ณ„์ธต ์ฐจ์ด

DDR5 on-die ECC๋Š” DRAM ๋‹ค์ด ๋‚ด๋ถ€์˜ ์…€ ์ €์žฅ ์˜ค๋ฅ˜๋ฅผ DRAM ์žฅ์น˜ ์•ˆ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ , ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๊ทธ ๋‚ด๋ถ€ syndrome์„ ์ง์ ‘ ๊ด€์ฐฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Hsiao ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ECC๋Š” ์ปจํŠธ๋กค๋Ÿฌ์™€ DIMM ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐยทECC ๋น„ํŠธ, ํŒจํ‚ค์ง€ยท๋ฒ„์Šคยท์นฉ ์ˆ˜์ค€ ์˜ค๋ฅ˜๋ฅผ ๋ณ„๋„ ์ฝ”๋“œ์›Œ๋“œ๋กœ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ณ„์ธต์€ ๋Œ€์ฒด ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณดํ˜ธ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฅธ ์กฐํ•ฉ์ด๋ฉฐ, on-die ECC๊ฐ€ ์™ธ๋ถ€ side-band ECC๋ฅผ ๋Œ€์‹ ํ•œ๋‹ค๊ณ  ํ•ด์„ํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์žฅ๋‹จ์ 

์žฅ์  ํ•œ๊ณ„์™€ ์ฃผ์˜์ 
ํ™•์žฅ Hamming SECDED์™€ ๊ฐ™์€ 1๋น„ํŠธ ์ •์ •ยท2๋น„ํŠธ ๊ฒ€์ถœ ๋ชฉํ‘œ๋ฅผ ์œ ์ง€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์€ ๋‹ค์ค‘ bit ๋˜๋Š” ์นฉ ์ „์ฒด ์žฅ์• ๋ฅผ ์ •์ •ํ•˜์ง€ ๋ชปํ•จ
odd-weight ์—ด ์„ ํƒ์œผ๋กœ ์ด XOR ์ž…๋ ฅ๊ณผ ๋ฐฐ์„ ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ ๋‚ฎ์€ ์—ด ๊ฐ€์ค‘์น˜๋งŒ์œผ๋กœ ๊ฐ ํ–‰์˜ ์ตœ๋Œ€ fan-in์ด ์ตœ์†Œํ™”๋˜์ง€๋Š” ์•Š์Œ
64+8, 32+7 ๋“ฑ ๋ฐ์ดํ„ฐ ํญ์— ๋งž์ถฐ ์ฒด๊ณ„์ ์œผ๋กœ ์„ค๊ณ„ ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ ํญ, row balance, ๋ฌผ๋ฆฌ ๋งคํ•‘์ด ๋ฐ”๋€Œ๋ฉด ํ–‰๋ ฌ ๊ฒ€์ฆ์ด ํ•„์š”
syndrome์˜ ํ™€์ง์œผ๋กœ ๋‹จ์ผ/์ด์ค‘ ์˜ค๋ฅ˜ ๋ถ„๋ฅ˜๊ฐ€ ๋ช…ํ™•ํ•จ ์„ธ ๋น„ํŠธ ์ด์ƒ ์˜ค๋ฅ˜์—์„œ๋Š” syndrome ์˜ค์ธ์‹ยท์˜ค์ •์ • ๊ฐ€๋Šฅ
๋ณ‘๋ ฌ ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ XOR ๋…ผ๋ฆฌ ์ง€์—ฐ๊ณผ ์ „๋ ฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์ข‹์Œ ์‹ค์ œ ๋ฉด์ ยท์ „๋ ฅยท์ง€์—ฐ ์ด๋“์€ RTL ํ•ฉ์„ฑ ๋ฐ ๋ฐฐ์„  ๊ฒฐ๊ณผ์— ์˜์กด
CE/UE์™€ scrub ์ •์ฑ…์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ Hsiao Code ์ž์ฒด๊ฐ€ scrub, ์˜ค๋ฅ˜ ๋กœ๊น…, Chipkill ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์Œ

๊ด€๋ จ ๊ธฐ์ˆ 

๊ด€๋ จ ๋ฌธ์„œ

์ฐธ๊ณ  ๋ฌธํ—Œ

๊ตฌ๋ถ„ ์ž๋ฃŒ
์› ๋…ผ๋ฌธ M. Y. Hsiao, "A Class of Optimal Minimum Odd-weight-column SEC-DED Codes", IBM Journal of Research and Development, 14(4), 395-401, 1970
ํ›„์† ์—ฐ๊ตฌ A Class of Odd-Weight-Column SEC-DED-SbED Codes for Memory System Applications, IEEE Transactions on Computers, 1984
ํ‘œ์ค€ JEDEC JESD79-5, DDR5 SDRAM ํ‘œ์ค€
๊ธฐ๋ฐ˜ ์ด๋ก  Hamming Code, extended Hamming๊ณผ SECDED์˜ ๊ฑฐ๋ฆฌยทsyndrome ์„ค๋ช…

ํ•ต์‹ฌ ์ •๋ฆฌ

Hsiao Code๋Š” SECDED์˜ ์˜ค๋ฅ˜ ๋ณด์žฅ ์ˆ˜์ค€์„ ๋†’์ด๋Š” ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ฐ™์€ ๋ณดํ˜ธ ์ˆ˜์ค€์„ ๋ฉ”๋ชจ๋ฆฌ ํ•˜๋“œ์›จ์–ด์— ๋” ์ ํ•ฉํ•œ ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ ํ–‰๋ ฌ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์„ค๊ณ„์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์—ด์„ ์„œ๋กœ ๋‹ค๋ฅธ odd-weight ๋ฒกํ„ฐ๋กœ ๊ตฌ์„ฑํ•˜๋ฉด ๋‹จ์ผ ์˜ค๋ฅ˜ syndrome์€ ํ™€์ˆ˜, ์ด์ค‘ ์˜ค๋ฅ˜ syndrome์€ ์ง์ˆ˜๊ฐ€ ๋˜์–ด ๋‘ ๊ฒฝ์šฐ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 64๋น„ํŠธ ๋ฐ์ดํ„ฐ์˜ ๋Œ€ํ‘œ ๊ตฌ์„ฑ์€ 8๊ฐœ์˜ ๊ฒ€์‚ฌ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ€์ค‘์น˜ ํ›„๋ณด๋ฅผ ์„ ํƒํ•˜๋ฉด ํ–‰๋ ฌ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ ์„ฑ๋Šฅ์€ XOR ํŠธ๋ฆฌ์™€ ๋ฌผ๋ฆฌ ๋ฐฐ์น˜๊นŒ์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DRAM ์นฉ ์ „์ฒด ์žฅ์• ์™€ ๋†’์€ ์˜ค๋ฅ˜ ์ •์ • ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•˜๋ฉด Hsiao SECDED๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ Chipkill, Reed-Solomon, BCH, LDPC ๊ฐ™์€ ๋ณ„๋„ ๊ณ„์ธต์„ ํ•จ๊ป˜ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.