반응형
캐시(cache)란?
캐시는 컴퓨팅에서 자주 사용되는 데이터나 연산 결과를 임시로 저장하는 고속 메모리이다.
메인 메모리보다 빠른 속도로 데이터에 접근할 수 있도록 설계되어 있어, 시스템 성능을 크게 향상시킬 수 있다.
특히 CPU와 메모리 간의 병목 현상을 줄이는 데 중요한 역할을 한다.
캐시 히트(Cache Hit)
요청한 데이터가 캐시에 존재하는 경우를 뜻함. 캐시 히트가 발생하면 데이터 접근시간이 매우 짧아짐.
캐시 미스(Cache Miss)
요청한 데이터가 캐시에 없는 경우를 뜻함. 캐시 미스가 발생하면 메인메모리에서 데이터를 가져와야함. 접근시간 길어짐.
캐시 일관성(Cache Coherency)
여러 캐시가 동일한 메모리 영역을 공유할 때 데이터 일관성을 유지하는 메커니즘. 특히 멀티프로세서 시스템에서 중요함.
캐시의 종류
- CPU 캐시:
- L1 캐시: 가장 빠르고 작은 크기의 캐시로, CPU 코어 내부에 위치.
- L2 캐시: L1 캐시보다 크고 약간 느리며, 여전히 CPU 내부에 존재.
- L3 캐시: 여러 코어가 공유하는 캐시로, L1 및 L2 캐시보다 크고 느림.
- 디스크 캐시:
- 디스크에 접근하는 속도를 향상시키기 위해 사용되는 캐시로, 주로 하드 드라이브나 SSD에 적용.
- 웹 캐시:
- 웹 브라우저나 프록시 서버에서 자주 방문하는 웹 페이지를 저장하여, 인터넷 속도를 향상시킴.
캐시 매핑(Cache Mapping)
메모리 주소를 캐시 위치에 할당하는 방법을 뜻함. 주로 직접 매핑(Direct Mapping), 연관 매핑(Associative Mapping), 집합 연관 매핑(Set-Associative Mapping) 세 가지 방법이 있다.
직접 매핑 (Direct Mapping)
메모리의 각 블록이 캐시의 특정 위치에 고정적으로 할당됨. 가장 단순한 캐시 매핑 방법.
- 주소 구조
- <Tag, Index, Offset> 으로 나뉨.
- 태그 (Tag): 캐시 블록이 메인 메모리의 어떤 블록과 관련이 있는지를 나타내는 정보.
- 인덱스 (Index): 캐시 내의 특정 캐시 라인(블록)을 선택하는 데 사용되는 정보. 이 인덱스는 캐시의 총 크기와 관련이 있으며, 일반적으로 2의 제곱수로 설정됨.
- 오프셋 (Offset): 선택된 캐시 블록 내의 특정 바이트를 지정. 각 캐시 블록은 메모리의 여러 바이트를 저장할 수 있기 때문에, 이 정보를 통해 원하는 데이터에 접근할 수 있음.
- 작동 원리:
- 메모리 주소에서 인덱스를 추출합니다.
- 인덱스에 해당하는 캐시 라인을 찾습니다.
- 태그를 비교하여 데이터가 존재하는지 확인합니다.
- 캐시 히트 시 데이터 반환, 캐시 미스 시 메모리에서 데이터 로드.
- 장점:
- 구현이 간단하고, 비용이 저렴함.
- 단점:
- 충돌이 많이 발생. 동일한 인덱스에 여러 메모리 블록이 매핑될 경우, 하나의 블록만 저장할 수 있음.
연관 매핑 (Fully Associative Mapping)
순서를 일치시키지 않고 메모리의 어느 블록이든 캐시의 어느 위치에도 저장될 수 있는 방식. 인덱스 없이 태그만 사용.
- 주소 구조:
- 주소는 태그(Tag)와 오프셋(Offset)으로 나뉩니다.
- 작동 원리:
- 모든 캐시 라인의 태그를 검색.
- 일치하는 태그가 있는지 확인.
- 캐시 히트 시 데이터 반환, 캐시 미스 시 메모리에서 데이터 로드 후 캐시 라인에 저장.
- 장점:
- 충돌이 거의 발생하지 않음. 모든 메모리 블록이 모든 캐시 라인에 저장될 수 있음.
- 단점:
- 태그 검색이 복잡하고 비용이 많이 든다. 모든 태그를 병렬로 비교해야 하기 때문에 하드웨어 비용이 증가.
- 모든 블록을 탐색해야해서 속도가 느리다.
집합 연관 매핑 (Set-Associative Mapping)
직접 매핑과 연관 매핑의 혼합 방식.
캐시는 여러 개의 집합(Set)으로 나뉘며, 각 집합은 여러 캐시 라인을 가진다.
메모리 블록은 특정 집합 내의 어느 위치에도 저장될 수 있다.
- 주소 구조:
- <Tag, Index, Offset> 으로 나뉨.
- 집합 인덱스는 어느 집합에 저장될지를 결정.
- 작동 원리:
- 메모리 주소에서 집합 인덱스를 추출.
- 해당 집합의 모든 캐시 라인의 태그를 검색.
- 일치하는 태그가 있는지 확인.
- 캐시 히트 시 데이터 반환, 캐시 미스 시 메모리에서 데이터 로드 후 해당 집합 내의 빈 캐시 라인에 저장.
- 장점:
- 직접 매핑보다 충돌이 적다.
- 연관 매핑보다 비용이 적다.
- 단점:
- 여전히 일부 충돌이 발생할 수 있다.
728x90
반응형
'Computer Science > Operating System' 카테고리의 다른 글
메모리 할당 - 연속할당(고정분할, 가변분할)과 불연속할당(페이징, 세그멘테이션, 페이지드세그멘테이션), 단편화 (0) | 2024.11.04 |
---|---|
교착 상태(deadlock)와 은행원 알고리즘 (0) | 2024.11.02 |
경쟁상태 해결하기 - 뮤텍스, 세마포어, 모니터 (0) | 2024.11.01 |
공유자원과 경쟁 상태, 임계영역 (1) | 2024.10.31 |
멀티태스킹(Multitasking)과 CPU 스케줄링(선점형, 비선점형, 라운드로빈, 우선순위 기반 스케줄링, FIFO, SFJ ...) (0) | 2024.10.30 |