1 분 소요

Cache

캐싱이란 ‘기존의 액세스한 데이터의 사본을 보관’하는 ‘임시 저장 공간’을 의미하며 동시에
‘느린’ 데이터 저장 장치 에 존재하는 데이터를
빠른 저장장치에 보관시켜 전체적인 성능의
향상하는 ‘기법’에 대한 내용도 포함된다
(좀 더 세밀하게 말하자면 이러한 기법을 ‘캐싱’이라 한다)
(기본적으로 ‘기존에 액세스한 데이터’를 재활용하는 기법의 인식이 있음)

컴퓨터 공학적으로
또한 ‘경제적인 이유’로
빠른 속도를 가진 CPU와 ‘대용량’의 데이터를 저장하는 보조 기억 장치가
나뉘어졌다
(모~든 부품이 CPU처럼 고성능이더라도, 저장에만 사용하는 용도로 쓰인다면
아주 비현실적이며, 비경제적일 것이다)

그렇기에
‘하드웨어’에서 최대한 빨리 CPU로 데이터에 접근하기 위해
캐싱이 고안되었다

캐싱은 ‘느린 데이터 저장 장치’의 원본을
그보다 빠른 ‘데이터 저장 장치’에 임시로 저장하고
CPU는 비교적 빠른 데이터 저장 장치에서 데이터를 가져오는 것을 통해 이루어진다

이 때, 최근에 사용된 데이터를 캐싱해두면,
다시 ‘느린 데이터 저장 장치’에서 원본을 가져올 필요가 없으므로
성능이 향상된다
(이 경우를 ‘캐시 적중(Cache Hit)’라 한다)
(반대로 다시 느린 저장 장치로 찾으러 가야 한다면 ‘캐시 미스(Cache Miss)’라 한다)

따라서 캐싱은
빠른 저장 장치에 ‘원하는 데이터’가 있는지를 판별하고
없다면 점점 내려가며, 데이터를 찾는 방식으로 진행된다

  • 지역성
    • 시간 지역성
      최근 접근한 데이터에 다시 접근하는 ‘경향’
    • 공간 지역성
      최근 접근한 데이터 근처의 데이터에 접근하는 ‘경향’
  • 캐시 라인
    캐시의 기본적인 저장 단위
    메모리의 데이터와 해당 데이터의 메모리 주소를 매핑하고 저장한다
    이러한 매핑의 방식은
    ‘직접 매핑 캐시’, ‘집합 결합성 캐시’, ‘완전결합성 캐시’ 등이 존재한다

cache

tmi

멀티 프로세서 환경의 경우,
다른 프로세서에서 ‘캐시’의 원본을 수정할 수 있기에
‘캐시 일관성’에 관한 문제가 발생할 수 있음
(캐시는 원본의 ‘사본’을 미리 저장하는 방식이기에
하나의 CPU 코어 내부의 L1에 존재하는 캐시가 원본과 달라질 수 있음
L2,L3는 제조사에 따라 하나의 코어 밖에 있을수도 있다고 한다)

따라서, 멀티 프로세서 환경에서는
일관성을 유지하기 위하여 캐시 일관성 프로토콜이 필요하다
(MESI, MOESI 등의 프로토콜을 사용한다 한다)

댓글남기기