-
Cache Memory 란 무엇인가 ?CS-Theory/OS 2023. 9. 6. 12:23
하드디스크에서 데이터 파일을 불러와 cpu 에서 연산을 수행을 하는 상황을 이해해보자 .
1. Main Memory 의 등장 배경 , DRAM Dyanmic Random Access Memory
CPU 의 연산 속도 차이와 HDD/SDD(외장메모리) 의 연산 속도 , 데이터 I/O로 인하여 발생하는 속도의 차이로 인하여 병목 현상이 발생하고 이러한 문제점을 해결하기 위하여 cpu 가 작업할 데이터와 명령들을 저장하는 Main Memory 를 두게 되었다.
Main Memory 는 보통 DRAM 을 사용한다. In Memory DB Redis 도 DRAM 을 기본으로 동작한다.
2. Cache Memory 의 등장 ,SRAM : Static Random Access Memory
기술의 발전에 따라 프로세서의 클럭 속도가 매우 빨라짐에 따라 프로세서 밖에 있는 Main Memory 와 CPU 사이에서 데이터를 빠르게
CPU 에게 제공을 해주는 데이터 지역성의 원리를 이용한 캐시메모리가 등장한다 .
Cache Memory 는 자주 사용하는 데이터를 CPU에 먼 외장 메모리/메인 메모리 에 저장하지 말고 가까운 곳에 저장을 하여 조회에 성능을 높이는 기능을 한다.
Cache Memory 는 보통 SRAM 을 사용한다.
6T SRAM 이라는 단어를 종종 볼 것인데 여기서 말하는 6T 랑 통상적으로 SRAM 셀은 6 개의 트랜지스터가 들어간다.
3. 멀티 레벨 캐시 메모리
오늘 날의 SRAM을 이용한 캐시 메모리는 CPU 내부 또는 외부에 여러겹의 층과 같이 설계를 한다.
레이어의 숫자가 높아 질수록 저장할 수 있는 데이터 공간의 크기가 증가하며 액세스 속도는 하락 한다.
L1 Cache : cpu 내부에 있다.
- 명령어를 저장하는 부분과 데이터를 저장하는 부분이 서로 분리 되어 있다.
명령어 : 공간 지역성을 가진다. => 한번 호출한 데이터의 인근 메모리주소를 참조할 확률이 높다.
데이터 : 시간 지역성을 가진다. => 한번 호출한 데이터가 가까운 시일에 다시 참조될 확률이 높다.
L2 Cache : cpu 내부 또는 외부에 있다.
- L1 Cache 에서 찾고자 하는 데이터가 없으면 L2 에서 데이터를 찾는다.
L3 Cache .....
L1 ~L3 까지 프로세서(cpu) 내부의 존재하는 설계도 있고 (인텔의 i7,i5) ,, 아닌 것도 있다.
공개된 애플의 m1 칩 아키텍처의 경우 각 프로세스 마다 L1 캐시가 존재하며
프로세스(코어) 전부가 공유가능한 L2 캐시로 설계가 되어있는것을 확인 할수 있다.
정리하면 데이터는 다음과 같은 과정들을 거친다.
CPU Register <- > SRAM {L1 - > L2 -> L3} <-> DRAM <-> SDD/HDD
캐시 메모리의 관한 정보를 다뤘지만 , 캐싱을 할 수 있는 장소는 여러 곳이다라고 설명하고 글을 마치고자 한다.
DB 에서 캐싱이 클라이언트 서버 ,브라우 캐싱등 다양한 곳에 캐싱이 가능하다.
출처 :
1. Redis
https://redis.com/glossary/cache-memory/
2. Google patents
https://patents.google.com/patent/KR100634183B1/ko