1. 읽기(Read)는 평화롭지만, 쓰기(Write)는 전쟁이다
데이터를 읽는 건 간단합니다. 그냥 복사해 오면 끝이니까요. 하지만 데이터를 고치는(Write) 순간, 족보가 꼬이기 시작합니다.
- 상황: CPU(레지스터)가 A = 1을 A = 2로 바꿨습니다.
- 캐시: A = 2로 업데이트됨.
- RAM: 여전히 A = 1임.
- 문제: 불일치(Inconsistency) 발생! 누군가 지금 RAM을 읽으면 옛날 데이터를 가져가게 됩니다.
이 문제를 해결하는 두 가지 정책이 있습니다.
2. 정책 1: Write Through (직통 쓰기) - "겁쟁이 전략"
- 동작: CPU가 캐시에 쓸 때, 동시에 RAM에도 씁니다.
- 장점: 캐시와 RAM의 데이터가 항상 똑같습니다(일관성 유지). 아주 안전하죠.
- 치명적 단점: 느려 터졌습니다.
- 캐시에 쓰는 건 1ns면 되는데, RAM에 쓰는 100ns를 기다려야 끝납니다.
- 결국 RAM 속도로 하향 평준화가 되어버립니다. 비싼 캐시를 산 보람이 없죠.
3. 정책 2: Write Back (나중에 쓰기) - "게으른 천재 전략"
- 동작: CPU는 캐시에만 A = 2라고 쓰고, "완료!"를 외칩니다. RAM에는 안 씁니다.
- 대신 캐시 데이터 옆에 "Dirty Bit (더러운 비트)"를 1로 체크해 둡니다.
- 의미: "이 데이터는 수정되었음. 원본(RAM)이랑 다름. 건드리지 마셈."
- 언제 RAM에 쓰나?
- 나중에 캐시가 꽉 차서 이 데이터를 쫓아내야 할 때(Eviction), 그때 Dirty Bit를 확인하고 RAM에 몰아서 씁니다.
- 장점: 엄청나게 빠릅니다. CPU는 RAM 속도를 기다릴 필요가 없습니다.
- 위험성: 데이터를 RAM에 옮겨 적기 전에 전원이 팍 꺼지면?
- 캐시(SRAM)는 휘발성이라 데이터가 날아갑니다. RAM은 영영 A = 2로 변했다는 사실을 모르게 됩니다. (데이터 손실)
4. SSD에 적용: "SSD도 거짓말을 한다"
자, 이제 이 원리를 SSD에 대입해 봅시다. 이 부분이 전자공학도로서 가장 중요하게 봐야 할 포인트입니다.
대부분의 고성능 SSD에는 DRAM(캐시)이 달려 있고, 기본적으로 Write Back 방식을 씁니다.
- OS: "야 SSD야, 이 1GB짜리 야동 파일 저장해." (Write 요청)
- SSD: (NAND Flash는 느리니까 일단 DRAM 캐시에만 후다닥 받음)
- SSD: "네! 저장 다 했습니다!" (Ack 신호 보냄 - 거짓말)
- OS: "오, 벌써? 빠르네." (사용자에게 '저장 완료' 팝업 띄움)
- SSD 내부: 사용자가 안 볼 때, DRAM에 있는 데이터를 느긋하게 낸드 플래시(NAND)로 옮겨 적습니다(Flush).
5. 대참사 시나리오 (Sudden Power Off)
만약 SSD가 "저장 다 했어요!"라고 뻥치고 아직 낸드에 옮겨 적고 있는데, 갑자기 정전이 된다면?
- OS: "분명 저장됐다고 했잖아?"
- SSD: "아... 사실 DRAM에 있었는데 전기가 끊겨서 다 날아갔슈..."
- 결과: 파일이 깨지거나, 심하면 DB가 날아가는 대형 사고 발생.
6. 해결책: 커패시터와 Flush 명령어
그래서 엔터프라이즈(서버용) SSD나 고급 OS 설정은 대책을 세웁니다.
- 하드웨어 대책 (PLP - Power Loss Protection):
- SSD 기판을 뜯어보면 **탄탈 커패시터(노란색 칩)**가 잔뜩 박혀 있습니다.
- 전원이 툭 끊겨도, 이 커패시터에 저장된 전기로 몇 밀리초(ms) 동안 버티면서 DRAM에 있는 데이터를 낸드로 필사적으로 쏟아붓고 죽습니다.
- 소프트웨어 대책 (Flush / FUA):
- 은행 거래 같은 중요한 데이터는 OS가 SSD에게 명령합니다.
- "야, 캐시에 넣고 뻥치지 말고, 지금 당장 낸드 플래시에 박아 넣어! (Force Unit Access)"
- 이러면 SSD는 Write Through처럼 동작해서 느려지지만, 데이터는 안전합니다.
요약
- Write Through: 동시에 씀. 안전하지만 RAM 속도에 발목 잡힘.
- Write Back: 캐시에만 쓰고 나중에 씀. 빠르지만 전원 나가면 위험함.
- Dirty Bit: "이 데이터는 수정됐으니 나중에 꼭 원본에 반영해야 해!"라는 표식.
- SSD DRAM: Write Back 캐시 역할을 해서 속도를 뻥튀기해준다.
'Study > Memory, SSD, RAM' 카테고리의 다른 글
| FTL 상세 구조 (0) | 2026.01.20 |
|---|---|
| FTL (Flash Translation Layer) Section Mapping, Block Mapping (0) | 2026.01.20 |
| 페이지와 페이징 (Paging & TLB), Thrashing (0) | 2026.01.19 |
| 가상 메모리 (Virtual Memory), MMU, SWAP (0) | 2026.01.19 |
| 메모리 계층구조, 캐시 메모리vs가상 메모리 (0) | 2026.01.19 |