메모리 계층과 캐시 매핑: 데이터 처리 속도를 높이는 기술
컴퓨터가 프로그램을 실행할 때, 데이터에 빠르게 접근하는 것이 중요합니다.
이를 위해 컴퓨터는 여러 종류의 메모리를 계층적으로 사용합니다.
또한, 캐시라는 임시 저장소를 사용해 자주 접근하는 데이터를 미리 저장함으로써, CPU가 느린 주기억장치(RAM)나 보조기억장치(HDD/SSD) 대신 빠르게 데이터를 읽어올 수 있도록 돕습니다. 이 글에서는 메모리 계층의 구성과 특징, 그리고 캐시가 메모리의 데이터를 어떻게 매핑하는지를 알아보겠습니다.
메모리 계층의 기본 구성
컴퓨터의 메모리 계층은 크게 네 가지로 구분됩니다. 각 계층은 속도, 용량, 가격 면에서 차이가 있습니다.
1) 레지스터 (Register)
CPU 내부에 있는 아주 작은 메모리 공간입니다.
- 특징: 매우 빠르지만 용량이 극히 작으며, 전원이 꺼지면 데이터가 사라지는 휘발성 메모리입니다.
- 예시: CPU가 연산 중 임시 데이터를 저장하는 용도로 사용됩니다.
2) 캐시 (Cache)
CPU와 주기억장치(RAM) 사이에 위치한 임시 저장소로, 자주 사용되는 데이터를 저장합니다.
- 특징: 레지스터보다는 느리지만 RAM보다는 훨씬 빠르며, L1, L2, L3 캐시 등 여러 단계로 나뉩니다. 숫자가 작을수록 CPU에 가까워 속도가 빠릅니다.
- 예시: 반복문에서 같은 데이터를 여러 번 읽을 때, 처음 한 번 읽은 데이터가 캐시에 저장되어 다음 번에는 빠르게 가져옵니다.
3) 주기억장치 (Main Memory, RAM)
현재 실행 중인 프로그램과 데이터를 저장하는 메모리입니다.
- 특징: 캐시보다 느리지만 용량은 크며, 전원이 꺼지면 데이터가 사라지는 휘발성 메모리입니다.
- 예시: 여러분이 실행하는 애플리케이션의 데이터를 저장합니다.
4) 보조기억장치 (Secondary Storage)
데이터를 영구적으로 저장하는 장치입니다.
- 특징: 속도는 느리지만 용량이 크며, 전원이 꺼져도 데이터가 유지되는 비휘발성 메모리입니다.
- 예시: HDD, SSD 등이 있으며, 운영체제나 대용량 파일을 저장합니다.
위 계층으로 갈수록 속도는 느려지지만 용량은 커지고, 가격은 저렴해집니다. 반대로, 속도가 빠른 계층은 용량이 작고 가격은 비쌉니다.
캐시의 작동 원리
캐시는 CPU와 RAM 사이의 속도 차이를 줄이기 위해 사용됩니다.
자주 사용되는 데이터를 미리 저장해 두어, 필요할 때 빠르게 접근할 수 있도록 합니다.
캐시 히트와 캐시 미스
- 캐시 히트
CPU가 필요한 데이터가 캐시에 있을 때, 매우 빠르게 데이터를 가져올 수 있습니다. - 캐시 미스
필요한 데이터가 캐시에 없으면, 느린 RAM이나 보조기억장치에서 데이터를 읽어와야 하므로 시간이 더 걸립니다.
지역성(Locality)
캐시가 효과적으로 동작하는 이유는 지역성 때문입니다.
- 시간 지역성(Time Locality)
최근에 사용된 데이터는 곧 다시 사용될 가능성이 높습니다.
ex) 반복문에서 동일 데이터를 여러 번 접근하면, 첫 번째 접근 후 캐시에 저장되어 빠른 속도로 재사용됩니다.
- 공간 지역성(Spatial Locality)
한 데이터에 접근하면 그 데이터와 인접한 데이터에도 접근할 가능성이 높습니다.
ex) 배열의 인접한 요소들이 메모리에 연속되어 저장되므로, 하나의 요소를 읽을 때 인근 요소들도 함께 캐시에 로드됩니다.
캐시 매핑 (Cache Mapping) 방식
캐시 매핑은 메인 메모리의 데이터를 캐시 메모리에 저장할 때, 데이터를 어느 위치에 둘지 결정하는 방법입니다.
여기서는 직접 매핑, 연관 매핑, 집합 연관 매핑의 세 가지 주요 방식을 설명합니다.
1) 직접 매핑 (Direct Mapping)
메인 메모리의 각 데이터 블록은 캐시의 특정 슬롯에만 저장됩니다. 예를 들어, 메모리 주소가 특정 값이면 정해진 캐시 슬롯으로 바로 매핑됩니다.
- 장점
구현이 간단하고 빠릅니다. - 단점
서로 다른 메모리 블록이 같은 캐시 슬롯에 매핑되면 충돌(conflict)이 발생해, 자주 캐시 미스가 발생할 수 있습니다. - Ex
만약 메모리 블록 1, 11, 21이 모두 캐시의 슬롯 1에 할당된다면, 이들 중 하나가 캐시에 저장되면 나머지 블록은 덮어쓰여 충돌이 발생합니다.
2) 연관 매핑 (Fully Associative Mapping)
메인 메모리의 어떤 데이터 블록이든 캐시의 어느 슬롯에도 저장할 수 있습니다. 캐시 슬롯에 저장되는 위치가 고정되지 않습니다.
- 장점
충돌이 거의 발생하지 않아, 어떤 데이터든 캐시에 저장할 수 있습니다. - 단점
저장된 데이터에서 원하는 데이터를 찾기 위해 모든 캐시 슬롯을 검사해야 할 수 있으므로, 검색 시간이 증가할 수 있습니다. - Ex
작은 크기의 캐시에서는 모든 슬롯을 비교해야 하므로, 직접 매핑에 비해 검색 오버헤드가 발생할 수 있습니다.
3) 집합 연관 매핑 (Set-Associative Mapping)
직접 매핑과 연관 매핑의 중간 형태로, 캐시를 여러 개의 집합(Set) 으로 나눈 후, 각 집합 내에서는 연관 매핑을 수행합니다.
- 작동 방식
메인 메모리의 데이터 블록은 먼저 집합 번호를 계산한 후, 해당 집합의 슬롯 중 하나에 저장됩니다. - 장점
직접 매핑보다 충돌이 줄어들면서, 연관 매핑보다 검색 속도가 빠릅니다. - Ex
예를 들어, 메모리 블록이 100개 있고 캐시 슬롯이 10개라면, 캐시를 5개 집합으로 나눌 수 있습니다. 각 집합은 2개의 슬롯을 갖게 되어, 메모리 블록이 집합 내에서 자유롭게 저장되면서도 전체 검색 범위가 좁아집니다.
- 직접 매핑: 구현이 간단하지만 충돌이 잦음
- 연관 매핑: 충돌은 거의 없지만 검색에 시간이 걸림
- 집합 연관 매핑: 두 방식의 절충안으로, 충돌을 줄이면서도 빠른 검색을 가능하게 함
웹 브라우저와 데이터베이스에서의 캐싱 활용
웹 브라우저 캐시
웹 브라우저는 사용자가 웹 페이지를 빠르게 로드할 수 있도록, 여러 종류의 캐시를 사용합니다.
- 쿠키(Cookie)
작은 데이터(최대 약 4KB)를 키-값 형태로 저장하며, 만료 기한을 설정할 수 있습니다.- 용도: 사용자 인증, 세션 식별 등에 사용됩니다.
- 특징: 서버와의 통신 시 자동으로 전송되며, 보안을 위해 httponly 옵션을 적용할 수 있습니다.
- 로컬 스토리지(Local Storage)
만료 기한 없이 최대 약 5MB까지 데이터를 저장할 수 있는 공간입니다.- 용도: 사용자 설정, 캐시 데이터 등 장기간 저장해야 하는 데이터를 보관합니다.
- 세션 스토리지(Session Storage)
웹 브라우저의 각 탭별로 데이터를 저장하며, 탭이 닫히면 데이터가 삭제됩니다.- 용도: 탭 단위의 임시 데이터 저장에 유용합니다.
데이터베이스 캐싱 계층
대규모 웹 애플리케이션에서는 데이터베이스에 대한 부하를 줄이기 위해 캐싱 계층을 사용합니다.
- Ex
MySQL이나 PostgreSQL 같은 메인 데이터베이스 위에, Redis와 같은 인메모리 데이터 저장소를 두어 자주 조회되는 쿼리 결과를 캐시합니다.
이렇게 하면 동일한 쿼리 요청 시 데이터베이스 대신 빠른 Redis에서 데이터를 반환받아 응답 속도를 크게 향상시킬 수 있습니다.
정리
컴퓨터 시스템의 메모리 계층은 레지스터에서 시작하여 캐시, RAM, 보조기억장치로 구성되어 있으며, 각 계층은 속도, 용량, 가격에 따라 차이가 있습니다.
캐시는 이러한 계층 사이의 속도 차이를 극복하기 위해 사용되는 중요한 기술입니다.
- 캐시 매핑은 메인 메모리의 데이터를 캐시에 저장할 때 어느 위치에 저장할지를 결정하는 방식으로, 직접 매핑, 연관 매핑, 집합 연관 매핑 등이 있습니다.
- 각 매핑 방식은 장단점이 있으므로, 시스템의 요구 사항과 데이터 특성에 맞게 선택되어야 합니다.
- 또한, 웹 브라우저 캐시와 데이터베이스 캐싱 계층을 활용하면 사용자 경험을 크게 향상시키고, 서버 부하를 줄일 수 있습니다.
'CS_운영체제' 카테고리의 다른 글
[CS_운영체제] 프로세스 관리와 통신 (PCB, 컨텍스트 스위칭, 멀티 프로세싱, IPC) (2) | 2025.03.20 |
---|---|
[CS_운영체제] 프로세스와 스레드, 컴파일 과정과 메모리 구조 (0) | 2025.03.10 |
[CS_운영체제] 메모리 관리 (1) | 2025.03.05 |
[CS_운영체제] 컴퓨터 요소 (2) | 2025.01.22 |
[CS_운영체제] 운영체제의 역할과 구조 (0) | 2025.01.10 |