IT공부

[ETC] 메모리 원자성과 DB 원자성

shine94 2025. 1. 24. 15:08

* 메모리 원자성(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

   트랜잭션 단위로 모든 작업들이 정상적으로 수행 완료되거나, 아니면 어떠한 작업도 수행되지 않는 상태를 보장