멀티 레벨화, Cell 당 정보량 증가시킴( Vnand, TLC..)
-> Nand flash 자체의 오류 증가 = 높은 수준의 ECC 가 필요하다.
NAND flash 용 ECC는
메모리의 채널 특성 및 데이터 저장 장치에서 요구되는 신뢰성 등을 고려하여 설계 되어야 한다.
데이터 저장 장치에는 저장 시점과 읽는 시점이 다르기 때문에 ARQ(automatic repeat request)를 사용할 수 없고, FEC(forward error correction)을 사용해야한다.
또한 저장장치에서는 ECC parity overhead를 최소화 하기 위해, 높은 부호율을 갖는 부호를 사용할 것이 요구되며, 저장장치이므로 통신시스템 대비 매우 높은 신뢰성이 보장되야함
ARQ(automatic repeat request) : 역방향 채널을 통해 ACK 와 NACK 정보를 전송하여 보정
FEC(Forward Error Correction) : 송신부에서 송신전에 미리 수행
- 장점 : 연속적인 data 전송, 역방향 채널 필요 없다, 군집오류(burst error)에 강함
- 단점 : 기기와 coding 방식이 복잡, 잉여 bit로 인한 채널 낭비
- 종류(기억장치의 유무에 따라)
A. Block Code :
선형 code(hamming code) : 자기정정부호
순회 code(CRC code, BCH code) : reed solomon code 는 bch code 의 일종
B. Convolutional Code :
부호화는 일정 길이의 block 단위로 이루어 지는데, 각 block 에서 부호화가 그 block에도 영향을 받는 방식의 기법, Tree부호라고도 함
UBER(uncorrectable bit-error rate) / RBER(raw bit-error rate)
- UBER : 시스템의 요구 신뢰성, SER(sector-error rate) 또는 FER(frame-error rate)를 정보어(information) 크기로 나눈 값, 10의 -15제곱 수준 이하가 요구된다.
- RBER : 메모리에서 읽어넨 데이터자체의 오류 수준 ( uncoded bit error rate와 동일한 개념)
◎ 대수 부호 적용
- 순환 부호는 부호의 설계 및 정정 능력 예측이 용이 하고 HW 구성 방법이 많이 존재하기 때문에 Nand flash 에서 많이 사용 되었다.
- SLC 위주의 Nand는 오류의 수준이 높지 않아서 수백 비트의 길이를 가지는 Hamming부호, 정정 능력이 작은 BCH(Bose-Chaudhuri-Hocquenghem)부호 주로 사용
오류 정정 원리
1) 부호화 과정
- 디지정 정보는 0과 1로 이루어진 정보수열로 표형. k개의 비트 단위로 블록구성(각 블록을 정보 벡터라 함, codeword, 부호벡터)
- 모든 부호어의 집합 : [n,k]
- 부호화 과정에서 추가되는 비트 : parity bit (대부분의 parity bit는 정보비트들의 특정한 선형 결합으로 만들어짐)
- [n,k] -> n-k개의 패리티 비트들을 어떤 선형 결합으로 설계하느냐에 따라 부호의 오류 정정 능력이 달라짐
부호화 이전의 정보 벡터가 차지하는 시간 T = 해당 부호어가 차지하는 시간 T
-> 부호화를 하게 되면 신호가 가지는 시간에 따른 변화율이 n/k만큼 증가. 이는 송신신호 주파수 대역폭이 그만큼 증가함을 의미함
(이러한 대역폭의 증가는 오류제어를 위해 지불될 비용이 됨)
부호율(code rate) ,비트당 정보량 : k/n