1. 캐시 메모리(Cache Memory)란?
캐시 메모리(Cache Memory)는 CPU와 메모리의 속도 차이로 인한 병목 현상을 완화하기 위한 범용 메모리이다.
캐시 메모리는 메인 메모리와 CPU 간의 데이터 속도 향상을 위해 중간 버퍼 역할을 하는 CPU 내 또는 외에 존재하는 메모리이다.캐시 메모리의 성능에 의해서 전체 시스템의 성능을 개선시킬 수 있는 메모리이다.
캐시 메모리는 메모리와 CPU 사이에 위치해 있으며, 메모리 계층 구조에서 레지스터 다음으로 상위에 위치한다.
CPU는 데이터를 처리하기 위해 메인 메모리와 끊임없이 데이터를 주고 받는다. 이때, CPU에 비해 메인 메모리는 속도가 느리기 때문에 메모리에 접근할 때 CPU는 효율적으로 사용되지 못한다.
이때 필요한 것이 캐시 메모리이다.
'Cache'는 보관, 저장을 의미한다. 즉 캐시 메모리는 데이터의 임시 보관소인 셈이다. 빠르게 일을 진행하고 있는 CPU에 비해, 메인 메모리가 데이터를 가져오고, 가져오는 속도가 느려서 캐시 메모리가 중간에 미리 CPU에 전달될 데이터를 들고 서 있는 형태이다.
2. 캐시의 작동 방법
- 데이터 요청이 들어오면 캐시에서 데이터를 탐색한다.
- 조회할 수 있는 데이터가 있는 경우(cache hit), 캐시에 저장된 데이터를 제공한다.
- 캐시가 없거나(cache miss) 오래된(expiration) 경우, 원본 데이터가 저장된 곳에서 데이터를 조회한 후, 캐시에 데이터를 복사 및 갱신한다.
- 오래된 데이터는 삭제한다.(eviction)
캐시 메모리는 용량이 작고 비싸기 때문에, 효율성 측면에서 오랫동안 사용되지 않는 데이터는 삭제한다.
캐시에 저장할 적은 양의 정보를 잘 선택하는 것도 비용적인 측면에서나 효율적인 측면 모두 높이는 방법이 된다.
3. 참조의 지역성
모든 데이터를 캐시에 모두 담기에는 캐시라는 저장공간은 매우 한정적이다. 그렇다면 어떤 정보를 캐시에 담아야 할까?
캐시에 담을 소수의 데이터를 선별할 때 사용되는 것이 '참조의 지역성' 이다.
캐시의 지역성이란, 데이터에 대한 접근이 시간적 혹은 공간적으로 가깝게 발생하는 것을 말한다.
즉, 캐시의 적중률(Hit rate)를 극대화하여 캐시가 효율적으로 동작하기 위해 사용되는 성질이다.
캐시의 지역성은 크게 3가지로 나뉜다.
- 시간적 지역성 : 최근에 사용했던 데이터가 재참조될 가능성이 높은 특성
- 공간적 지역성 : 최근에 사용했던 데이터와 인접한 데이터가 참조될 가능성이 높은 특성
- 순차적 지역성 : 데이터가 기억장치에 저장된 순서대로 인출되고 실행될 가능성이 높은 특성
4. 캐싱 라인(Caching Line)
캐시 메모리는 메인 메모리에 비해 크기가 매우 작기 때문에 메인 메모리와의 일대일 매칭이 불가능하다.
캐시가 아무리 CPU에 가깝게 위치하더라도, 데이터가 캐시 내의 어느 곳에 저장되어 있는지 찾기 어려워 만약 모든 데이터를 순회해야 한다면, 그것은 캐시의 장점을 잃기 때문에 쉽게 찾을 수 있는 구조가 필요하다.
따라서 캐시에 데이터를 저장할 때 특정 자료구조를 사용하여 묶음으로 저장하는데, 이를 캐싱 라인(Caching Line)이라 한다. 빈번하게 사용되는 데이터의 주소들이 흩어져 있기 때문에 캐시에 저장하는 데이터에는 데이터의 주소 등을 기록해둔 태그를 달아둘 필요가 있다. 이러한 태그들의 묶음 의미한다.
캐싱 라인은 크게 3가지의 매핑 방법을 사용한다.
- 직접매핑(Direct Mapping)
- 연관매핑(Associative Mapping)
- 직접연관매핑(Set Associatve Mapping)
직접매핑(Direct Mapping)
직접 매핑은 메인 메모리를 일정한 크기의 블록으로 나누어 각각의 블록을 캐시의 정해진 위치에 매핑하는 방식이다.
가장 간단하며 구현도 쉽다.
하지만 적중률(Hit rate)이 낮아질 수 있고, 동일한 캐시 메모리에 할당된 여러 데이터를 사용할 때 충돌이 발생하게 되는 단점이 존재한다.
연관매핑(Associative Mapping)
연관 매핑은 캐시 메모리의 빈 공간에 마음대로 주소를 저장하는 방식이다.
원하는 곳에 편하게 메모리값을 저장할 수 있기에 당연히 검색 과정은 복잡하고 느릴 수 있지만, 정말 필요한 캐시들 위주로 저장할 수 있기 때문에 적중률은 높다.
캐시가 일반 메모리보다 속도가 빠르므로 캐시의 검색량을 신경쓰는 것보단 적중률이 높은 것이 성능이 더 좋다.
직접연관매핑(Set Associatve Mapping)
직접 연관 매핑은 직접매핑과 연관매핑의 장점을 결합한 방식이다.
빈 공간에 마음대로 주소를 저장하되, 미리 정해둔 특정 행에만 저장하는 방식이다.
블록화가 되어 있기 때문에 검색은 좀 더 효율적으로 되고, 직접매핑처럼 저장위치에 대한 큰 제약이 있는 것이 아니기 때문에 적중률이 많이 떨어지지도 않는다.
대체적으로 많이 사용하는 매핑 기법이다.
5. 캐시 메모리의 특징
- 캐시는 메인 메모리와 CPU 사이에 위치하며, 자주 사용하는 프로그램과 데이터들을 기억한다.
- 캐시 메모리는 메모리 계층 구조에서 가장 빠른 소자이다.
- 캐시 메모리를 사용하면 메인 메모리에 접근하는 횟수가 줄어들어 컴퓨터의 처리 속도가 향상된다.
- 캐시 메모리는 용량이 작고, 비싸다는 단점을 가진다.
'공부 > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
[CS 스터디/컴퓨터시스템구조] 컴퓨터 레지스터 (0) | 2023.01.17 |
---|---|
[CS 스터디/컴퓨터시스템구조] 명령어 코드(Instruction Codes) (0) | 2023.01.17 |
[CS스터디/네트워크] IP 프로토콜 개념 (1) | 2023.01.17 |
[CS스터디 / 네트워크] URL, URI, URN (0) | 2023.01.04 |
[CS스터디 / 네트워크] 도메인 (0) | 2023.01.04 |