728x90
반응형
ECC란?


  • 읽혀지거나 전송되고있는 data에 대해 오류가 생겼는지 검사하고 필요하면 전송 중에 정정될 수 있게 한다.
  • 오류를 검출할 뿐 아니라 정정한다는 측면에서 패리티 검사와는 다르다.
  • ECC는 데이터 속도의 증가와 함께 점차 데이터 저장이나 전송을 위한 하드웨어 내에도 적용되고 있다.


동작원리

  1. 하나의 데이터 단위, 즉 "워드"가 램이나 보조기억장치에 저장될 때, 그 워드 내의 비트 순서를 나타내는 코드가 계산되어 그 데이터와 함께 저장된다.
    64 비트 길이의 워드 각각에는 이 코드를 저장하는데 필요한 여분의 7 비트가 소요된다.
  2. 데이터 단위를 읽어낼 때, 지금 읽으려고 하는 워드의 코드를 원래의 알고리즘을 이용해 다시 계산한다. 새로 생성된 코드와 그 워드가 저장될 때 생성되었던 코드를 비교한다.
  3. 만약 두 코드가 일치하면, 그 데이터에는 오류가 없다고 보고, 내보낸다.
  4. 그러나 만약 그 코드들이 일치하지 않으면, 코드 비교를 통해 잘못되었거나 빠진 비트들을 결정한 뒤, 그 비트를 정정한다.
  5. 그 데이터가 아직 저장 장치 내에 있을 때에는 정정을 위한 시도가 일어나지 않는다. 결국, 그것은 새로운 데이터에 의해 덮어씌워질 것이며,
    그 오류들은 일시적이라는 가정 하에 부정확한 비트들은 버려진다.
  6. 시스템이 꺼졌다 켜졌다를 계속해서 반복한 후, 같은 저장장소에서 반복되는 어떤 오류는 영구적인 하드웨어 에러를 의미하므로,
    반복적인 에러가 나는 위치를 나타내는 메시지가 로그에 기록되거나 시스템 관리자에게 보내어진다.





Parity 란?


  • data가 저장장치 내의 한 장소에서 다른 장소로 이동되거나 device간에 전송될 때, 데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어
  • PCI 버스와 I/O 버스 컨트롤러는 에러 체크를 위해 홀수 패리티 방법을 사용한다. 
  • 패리티 비트의 점검이 절대적으로 확실한 에러점검방법은 아닌데 그 이유는 전송 중 두 비트가(Double Bit)가 동시에 에러 나는 경우 잡아낼 수 없기 때문이다.
    그러나 Device 내에서의 전송에서는 이러한 가능성이 극히 적다고 간주된다.
  • 데이터의 무결성이 지극히 중요한 대형 Device에서는 패리티 체크를 위해 세 비트가 할당된다.


점검원리

  • 패리티 비트는 비트열 내에 추가되어 함께 이동한다. 이 비트는 오직 전송된 비트들이 성공적으로 도착하였는지를 식별하는 목적으로만 사용된다.
  • 비트들이 보내지기 전에 계산을 해서 만약 전체 데이터 비트의 합이 짝수이면 패리티 비트를 1로 설정함으로써 전송되는 모든 비트의 합계가 홀수가 되도록한다.
  • 만약 데이터 비트 값의 합이 이미 홀수라면, 패리티 비트는 0으로 설정된다.
  • 수신측에서는 들어오는 비트를 점검하여 전체 비트 값의 합이 홀수 인지를 확인한다. 이때 합이 짝수라면 전송중 에러가 발생하였다는 것을 의미하며
    그 데이터는 다시 전송되거나 또는 시스템을 멈추고 사용자에게 에러 메시지를 보내지는 등의 조치가 취해진다.





EDAC 란?


  • 하드웨어 에러검출 및 정정을 지원하는 Linux Kernel Module 중 하나이다.
  • PCI 버스 전송에러 및 주변 장치 에러검출도 지원
  • MCE 관련 로그는 OS의 메모리 모니터링 기술 EDAC 기능에 의해 기록되는데 이 기술은 하드웨어의 메모리 모니터링 기술보다 정밀하지 못하다.
    간혹 실제 오류가 없음에도 OS의 EDAC의 민감한 엔진에 의해 오류로 기록되는 경우가 있다.
  • 메시지 발생 시 하드웨어 정보(iLO,IML)을 통해 중복 확인하여 이상이 없는 경우 해당 메시지는 무시하거나 OS의 MCE 감지 기능을 비활성화 하는 것이 좋다.


참조



반응형

'System' 카테고리의 다른 글

HP-UX IP 설정 변경  (0) 2018.08.14
Solaris 네트워크 설정 (고정 IP)  (0) 2018.08.14
Semaphore(세마포어) & Mutex(뮤텍스)  (0) 2018.08.08
System Chunk 개념  (0) 2018.08.08
System 프로세스와 쓰레드 차이  (0) 2018.08.08

+ Recent posts