본문 바로가기
CS기본

캐시메모리란?

by PudgeKim 2020. 11. 14.

현대의 컴퓨터 구조는 폰노이만 구조로 실행하려는 프로그램이 메모리에 올라오면 cpu에서 메모리에 올라온 프로그램에 대해 여러 연산을 처리하여 프로그램을 실행하는 형식이다.

그런데 cpu에서 ram으로 접근하는 시간을 줄일 수 있는 방법을 고민하다가 나온게 캐시메모리이다.

비유를 들어 설명하자면 우리가 일상에서 하는 대화도 자주 사용되는 몇개의 단어들이 있는 것처럼 컴퓨터도 여러 명령어들 중에 빈번하게 사용되는 명령어들이 있다. 그런 명령어들을 ram이 아닌 더 빠른 메모리에 저장해놓고 cpu가 거기서 가져오면 더 빠른 연산이 가능하다.

그래서 위 그림처럼 cpu는 접근이 더 빠른 캐시메모리에 먼저 접근한 후에 원하는게 있는지 찾아본다.

이게 가능하려면 컴퓨터가 cpu가 미래에 쓸 데이터를 캐시메모리에 미리 저장해놓아야하는데 이걸 가능하기 위해서 

1. 최근에 접근한 데이터인지 (Temporal Locality)

2. 최근에 접근한 데이터의 주변인지 (Spatial Locality)

를 확인하여 예측한다.

cpu가 캐시메모리에 접근해서 원하는 데이터가 있을 경우를 cache hit라고 하고 
반대의 경우를 cache miss라고 한다.

당연히 cache hit가 높을수록 빨라진다. (cache miss의 경우 ram에 다시 접근해야하므로)

그리고 cache miss가 일어날 경우 ram에 접근해서 데이터를 가져오면서 그 데이터를 캐시에도 심어주게 된다.
이렇게 해야 Temporal Locality와 Spatial Locality가 계속 유지되기 때문이다.

즉, 캐시 메모리도 계속 바뀌게 되는 것이다.

'CS기본' 카테고리의 다른 글

1의 보수와 2의 보수  (0) 2020.11.06
컴퓨터와 2의보수  (0) 2020.10.30