* 메모리 원자성(Atomicity)
데이터의 읽기 또는 쓰기 작업이 분할되지 않고 한 번에 처리되는 성질을 의미한다
* 캐시 라인(Cache Line)과 메모리 원자성의 관계
캐시 라인이란?
CPU가 메모리를 효율적으로 관리하기 위해 사용하는 데이터 블록 단위(일반적으로 64바이트)
ㄴ 캐시 라인 내 데이터는 원자성을 보장할 수 있음(데이터를 한 번만 읽어와도 됨)
ㄴ 캐시 라인 경계를 넘는 데이터는 원자성을 보장할 수 없음(데이터를 두 번 읽어와야 함)
* 원자성 보장의 조건
(1) 캐시 라인 내부 데이터
데이터가 캐시 라인 경계를 넘지 않고, CPU 지원 크기(예: 64비트)에 맞춰 정렬되어 있다면 원자적으로 처리 가능
(2) 메모리 정렬
데이터가 자연스러운 정렬(Aligned Memory) 상태에 있어야 CPU가 원자성을 효율적으로 보장
(3) 하드웨어 동작
x86 아키텍처에서는 1바이트, 2바이트, 4바이트, 8바이트 단위의 정렬된 읽기/쓰기는 원자성을 보장
* 캐시 라인이 원자성을 보장하지 못하는 경우
(1) 캐시 라인 경계를 넘는 데이터
데이터가 두 개의 캐시 라인에 걸쳐 있으면 분할 처리가 필요해 원자성이 깨질 가능성이 있음
(2) 멀티코어 환경
여러 코어가 동일한 메모리를 접근할 때 캐시 불일치(Cache Inconsistency)로 문제가 발생할 수 있음
(3) 비정렬 메모리(Unaligned Memory)
데이터가 정렬되지 않으면 CPU는 데이터를 여러 번 걸쳐 접근할 수 있음
* DB 원자성
All or Nothing
트랜잭션 단위로 모든 작업들이 정상적으로 수행 완료되거나, 아니면 어떠한 작업도 수행되지 않는 상태를 보장
'IT공부' 카테고리의 다른 글
[C++] 접근 제어자 private 자바와의 차이점 (0) | 2024.12.29 |
---|---|
[ETC] 레드 블랙 트리 (0) | 2024.12.19 |
[C++] Placement New (0) | 2024.12.18 |
[ETC] 커널 전역 데이터 구조, 전역 or 프로세스별 커널 오브젝트 (0) | 2024.12.14 |
[ETC] 지수와 로그 역관계 (0) | 2024.12.14 |