저장장치에서 일어날 수 있는 오류
- DRAM의 비트가 0에서 1로 자발적으로 변경되는 것
- 전송 중 네트워크 패킷의 내용이 변경되는 것
- 기록된 시점과 읽은 시점 사이에 변경된 데이터 블록
문제가 생기면 시스템은 오류가 전파되기 전 작업을 중단하거나 오류를 보고, 또는 장치에 경고.
오류 감지 1 : 패리티 비트
고정 길이 워드의 값을 계산, 저장, 비교하기 위해 나머지 연산을 수행하는 체크섬의 한 형태.
- 메모리 시스템의 각 바이트를 패리티 비트와 연결시킨다.
- 메모리가 손상되면 패리티 비트가 바뀜.
- 저장된 패리티 비트와 일치하지 않게 됨
- 이를 이용해 단일 비트 오류를 잡을 수 있음.
- 그러나 이중 비트 오류는 감지되지 않을 수 있음.
- 비트의 XOR을 수행해 쉽게 계산됨.
오류 감지 2 : 순환 중복 검사 (CRC)
해시 함수를 이용해 다중 비트 오류를 검사한다.
오류 감지 3 : 오류 수정 코드 (ECC)
문제를 감지 + 보정까지 같이 해줌.
- 보정은 알고리즘과 저장장치를 추가로 사용하여 수행
- 코드는 필요한 추가 저장장치의 양과 보정할 수 있는 오류 갯수에 따라 다름
- HDD : 섹터별 ECC 사용
- SSD : 페이지당 ECC 사용
컨트롤러가 일반 I/O 동안 데이터의…
- 섹터/페이지를 쓸 때 ⇒ ECC는 기록 중인 데이터의 모든 바이트에서 계산된 값으로 기록된다.
- 섹터/페이지를 읽을 때 ⇒ ECC가 다시 계산 & 저장된 값과 비교.
- 저장된 숫자와 계산된 숫자가 다르면 데이터가 손상되었을 가능성이 큼.
ECC는 몇 비트가 손상되었는지 변경된 비트를 식별 & 복구 할 수 있게 충분한 정보를 포함.
- 따라서 오류 보정 방식임.
- 오류를 처리하고 나면 소프트 오류를 표기.
- ECC가 처리할 수 없을 정도로 오류가 많으면 하드 오류를 표기
컨트롤러는 섹터/페이지를 읽을 때마다 ECC 처리를 자동으로 수행.