Book/COMPUTER ORGANIZATION AND DESIGN RISC-V

5.5 Dependable Memory Hierachy

S0LL 2024. 12. 2. 16:19

1. 메모리 계층의 신뢰성 (Dependability)

 

신뢰성이 높은 메모리 계층 구조는 데이터 유실 없이 지속적으로 작동해야 한다.

빠르고 신뢰할 수 있는 메모리 계층을 설계하려면 **중복성(Redundancy)**을 활용하는 것이 핵심이다.

 

 

2. Defining Failure (실패 정의)

 

시스템은 두 가지 상태를 가진다:

1. Service Accomplishment:

서비스가 정상적으로 제공됨.

2. Service Interruption:

서비스가 사양(specification)과 다르게 작동하거나 중단됨.

 

Failure and Restoration (실패와 복구):

 

Failure: 시스템이 정상에서 비정상으로 전환되는 상태.

영구적(permanent): 쉽게 진단 가능.

간헐적(intermittent): 진단이 어려움.

Restoration: 비정상 상태에서 정상 상태로 전환되는 상태.

 

 

 

3. Reliability and Availability (신뢰성 및 가용성)

 

Reliability (신뢰성):

특정 시간 동안 지속적으로 서비스를 제공하는 능력.

측정 단위: Mean Time To Failure (MTTF).

Availability (가용성):

시스템이 정상 상태와 비정상 상태를 번갈아 가며 서비스하는 능력.

계산식:

Availability = (MTTF) / (MTTF + MTTR)

 

MTTR (Mean Time to Repair): 복구 시간.

 

 

 

MTTF vs. AFR (Annual Failure Rate):

MTTF는 시스템 작동 시간에 초점을 맞추는 반면, AFR은 연간 고장률을 나타냄.

AFR 계산식:

AFR = 9760hours(1year) / MTTF

 

 

예제: 디스크의 MTTF와 AFR 비교

 

디스크의 MTTF = 1,000,000 시간.

연간 AFR 계산:

AFR = 8760 / 1,000,000 = 0.876%

 

서버 100,000개, 각 서버에 디스크 2개가 있다면, 연간 고장 디스크 수:

 

100,000 * 2 * 0.876% = 876 개

 

 

 

4. Fault Tolerance와 신뢰성 향상 기법

 

가용성을 높이는 세 가지 방법:

 

1. Fault Avoidance:

고장을 예방하기 위한 설계 및 제작 품질 개선.

2. Fault Tolerance:

고장 발생 시에도 시스템이 정상적으로 작동하도록 중복성 추가.

예: RAID, ECC 메모리.

3. Fault Forecasting:

고장을 미리 예측해 사전에 대처.

 

 

 

5. Error Detection and Correction Codes

 

Parity Bit를 이용한 오류 검출:

 

Parity Bit: 데이터의 1 비트 수가 홀수인지 짝수인지를 저장.

읽기 시 Parity를 다시 계산하여 저장된 Parity와 비교.

제한 사항:

한 비트 오류는 감지 가능.

두 비트 오류는 감지 불가.

 

예제: Parity Bit를 이용한 오류 검출

 

데이터 값: 31_{10} = 00011111_2 (1 비트가 5개).

짝수 Parity 추가: 31_{10} = 000111111_2.

MSB(Most Significant Bit)가 반전되면 오류 감지.

두 비트 반전 시 오류 감지 불가.

 

 

Hamming Code를 이용한 오류 검출 및 수정

 

Richard Hamming은 단일 비트 오류를 검출하고 수정하는 코드를 설계.

Hamming Distance: 두 데이터 비트 패턴 간 다른 비트 수.

Hamming Distance가 d라면:

d = 2: 단일 비트 오류 검출 가능.

d = 3: 단일 비트 오류 검출 및 수정 가능.

 

 

 

Hamming Code 구현 단계:

 

1. 비트 포지션 지정:

데이터와 Parity 비트를 섞어 배치.

Parity 비트는 2^n 위치(1, 2, 4, 8, …)에 배치.

2. Parity 그룹 생성:

각 Parity 비트는 자신이 커버하는 데이터 비트의 Parity를 계산.

 

예제: Hamming Code

 

 

 

 

 

6. SEC/DED (Single Error Correcting, Double Error Detecting)

 

Hamming Code를 확장하여:

단일 비트 오류를 수정하고,

두 비트 오류를 검출 가능.

 

계산: 필요한 Parity Bit 수

 

 

2^p >= p + d + 1

 

p: Parity 비트 수.

d: 데이터 비트 수.

 

예제: d = 8일 때:

 

2^p >= 8 + p + 1 -> p = 4.

 

 

7. Advanced Error Correction: Chipkill 및 CRC

 

1. Chipkill:

IBM이 개발. 전체 메모리 칩 장애를 복구 가능.

RAID와 유사한 방식으로 데이터 재구성.

2. Cyclic Redundancy Check (CRC):

네트워크 전송에서 다중 비트 오류를 검출.

다항식을 사용해 효율적으로 오류를 계산.

'Book > COMPUTER ORGANIZATION AND DESIGN RISC-V' 카테고리의 다른 글

5.7 Virtual Memory  (2) 2024.12.02
5.6 Virtual Machines  (0) 2024.12.02
5.4 Measuring and Improving Cache Performance  (1) 2024.12.02
5.3 The Basics of Caches  (0) 2024.11.21
5.2 Memory Technologies  (0) 2024.11.20