루리코딩 세상

캐시 메모리(Cache Memory) - 주소 매핑(Address Mapping) 본문

하드웨어(Hardware, HW)

캐시 메모리(Cache Memory) - 주소 매핑(Address Mapping)

루리딩 2025. 5. 29. 23:59

캐시 메모리-주소매핑과 C-style_cast와 static_cast에 대해서 알아보려합니다.

CPU와 RAM 사이에는 캐시 메모리가 존재한다. 컴퓨터 내부의 존재하는 여러 개의 캐시 메모리는

니난번 참조 지역성 원리에 의해서, CPU가 사용할 것으로 예상되는 객체를 저장하는데, 

이 데이터가 맞아들어 캐시메모리 내에 있는 데이터를 사용하는 것을 '캐시 히트' 라는 것까지는

조사가 되었으나 주소 매핑은 무엇일까 ..

 


Mapping Function


CPU가 메모리 주소를 사용하여 메모리로 데이터를 받으려할때,  CPU가 쓰는 주소는 가상 메모리 주소로 어셈블리어로

처리할 명령을 연산해줄 필요성이 있다. 이때 중간의 메모리 장치(MMU)가 가운데에서 번역을 하여 물리 주소로 변환해준다.

그리고 캐시에 해당 주소에 대한 데이터가 있는지 확인을 하게되는데, 캐시 데이터 저장되는 방식에 따라 물리 주소를 다르게

해석 할 수 있다.


직접 매핑 (Direct Mapping)


캐시 메모리 설계에서 사용되는 용어로, 가장 간단한 캐시 매핑 방식 중 하나이다.

주기억장치의 블록이 캐시의 특정한 한 위치에만 매핑되는 방식이다. 캐시 블록 수가

제한되어 있기 때문에, 메모리의 여러 블록이 동일한 캐시 위치에 할당 될 수 있음.

충돌이 발생할 수 있지만, 하드웨어 구현이 단순하고 빠르다.

 

메모리 주소를 세 부분으로 나누어 Tag/Index/Offset으로 구성되며,

메모리 블록이 어떤 주소인지 식별하고, 캐시 내 Line에 저장될지를 나타낸다.


연관 매핑 (Assciative Mapping)


 

연관 매핑을 알아보기 전에 직접 매핑과 방식을 비교한 표를 참고해서 보면 도움이 될 듯하여

GTP를 활용해서 정리해봤다.

항목 직접 매핑 (Direct Mapping) 완전 연관 매핑 (Fully Associative) 집합 연관 매핑 (Set-Associative)
매핑 방식 하나의 메모리 블록은 캐시의 딱 한 줄에만 매핑 모든 캐시 줄 중 어디든 저장 가능 하나의 메모리 블록은 특정 집합 내 어느 줄에 저장
구현 난이도 ⭐ 가장 간단 ❗ 복잡 (모든 태그와 비교 필요) ⚖️ 중간 (일부 태그만 비교)
속도 ⏱️ 빠름 🚨 느림 (비교 연산 많음) ⚡ 빠르면서도 유연함
충돌 미스 ⚠️ 많이 발생 (같은 인덱스 주소 충돌) 👍 거의 없음 ✅ 줄 수에 따라 줄어듦
태그 비교 1개만 비교 전체 캐시와 비교 한 집합 내에서만 비교
하드웨어 비용 💰 저렴 💸 비쌈 💲 중간
사용 예시 임베디드 시스템, 단순 캐시 고성능 서버, 고속 캐시 대부분의 현대 CPU