1. 캐시메모리가 사용되는 방식
- 일반적으로 캐시 메모리(L2)는 CPU와 주기억장치 사이에 위치한다.
- 캐시 메모리는 CPU와 주기억장치 간의 속도차이를 극복하기 위해 사용되는 장치로
- CPU의 처리속도 만큼 빠른 속도를 보장한다.
- 그러나 주기억장치 만큼 큰 용량을 갖지 못한다. 비싸기 때문이다.
- 이와 같은 이유로, 캐시 메모리는 CPU가 사용할 데이터 또는 명령어의 일부분만 저장하게 된다.
2. CPU, 캐시메모리, 주기억장치의 상호작용
a) Word와 Block
▶ Word
- 그림에서 캐시메모리와 주기억장치를 구성하는 한칸을 의미한다.
- 한번에 레지스터에 옮길 수 있는 데이터 또는 명령어의 크기를 표현하는 단위다.
- 주기억장치에서 레지스터로 한번에 옮길 수 있는 데이터의 단위
- 하나의 명령어로 실행될 수 있는 데이터의 단위
- 흔히 32bit CPU, 64bit CPU라고 표현하는 방식이 워드의 크기를 의미한다.
- 32bit CPU라면 해당 CPU의 워드 크기가 32bit를 의미하는 것이다.
▶ Block
- 여러개의 워드를 묶은 집합을 의미한다.
b) 동작방식
- CPU에서 어떤 데이터를 요청하면 캐시메모리를 참조한다.
- 해당 데이터가 캐시메모리에 없는 경우, 주기억장치에 접근하여 가져온다.
- 이 과정에서 주기억장치에 접근하게 되면, 더 오랜 시간이 걸린다.
- 이 과정에서 캐시메모리에서 필요한 데이터를 찾으면 빠르게 처리된다.
c) 캐시 메모리가 있으면 무조건 빠를까?
- 캐시 메모리를 잘 운영하여 CPU가 주기억장치에서 데이터를 찾는 빈도수 보다
- 캐시 메모리에서 데이터를 찾는 빈도수가 더 많다면, 당연히 빠를 것이다.
- 하지만 캐시메모리는 주기억장치보다 훨씬 작은 저장공간을 갖고 있기 때문에,
- 실제로 CPU가 필요로 하는 모든 데이터를 캐시메모리에서 찾을 수는 없다.
3. 참조 지역성(Locality of reference)
- 캐시 메모리의 참조 지역성은 다른 말로 메모리 접근의 국부성이라고 한다.
- 이는 CPU가 필요로하는 데이터를 캐시메모리에 적재하기 위해서,
- 주기억장치에서 블럭을 가져올 때, 어떤 방식으로 적절한 데이터를 가져올 것인가를 결정하는 방법론이다.
- 다시 말해, 어떤 데이터를 어떤 우선순위로 캐시 메모리에 저장할 것인가를 결정하는 것이다.
- 어떤 데이터 블럭을 캐시메모리에 적재할 것인가를 결정할 때, 다음과 같은 요소를 고려한다.
- 추가적으로, 참조 지역성은 운영체제의 페이징기법과 유사한 작동방식을 갖는다.
a) 시간 구역성 (= 시간 지역성, Temporal Locality)
- 시간 구역성은 반복해서 사용하는 데이터 또는 명령어가 있음을 의미한다.
- 반복문을 실행하는 경우, 반복해서 사용하는 데이터 또는 명령어가 반드시 존재한다.
- 이러한 반복성을 고려하여 주기억장치에서 캐시 메모리로 데이터 블럭을 가져오는 것이다.
→ 최근에 사용한 또는 반복적으로 사용하는 명령어 / 데이터를 적재하는 방식
b) 순차 구역성 (= 순차 지역성, Sequential Locality)
- CPU가 어떤 명령어나 데이터를 순차적으로 수행해야 되는 상황을 의미한다.
- 이러한 상황에서는 순차적으로 실행할 데이터 블럭을 캐시메모리에 적재하는 것이다.
→ 주기억장치에 저장된 순서대로 사용되는 명령어 / 데이터를 적재하는 방식
c) 공간 구역성 (= 공간 지역성, Spatial Locality)
- CPU가 주기억장치의 특정한 메모리 주소에 있는 데이터를 접근하는 경우를 의미한다.
- 예를 들어, 어떤 배열의 특정 요소(index)에 접근한다거나, 특정한 포인터에 접근한다거나 하는 상황이다.
- 이처럼 특정 메모리 주소에 위치한 데이터를 반복해서 불러오는 작업을 한다면,
- 해당 메모리 주소의 데이터를 캐시메모리에 적재하는 것이다.
→ 주기억장치 내부에서 서로 인접해있고 연속적으로 사용하는 명령어 / 데이터를 적재하는 방식
- 이처럼 데이터 블럭을 적절하게 선택하여 캐시메모리에 적재하는 것이 캐시메모리의 효율을 최대화하는 방법이다.
'컴퓨터공학기초 개념 > 컴퓨터구조' 카테고리의 다른 글
26. 입출력 구조 - 입출력 제어 (0) | 2021.08.26 |
---|---|
25. 입출력 구조 - 시스템 BUS (2) | 2021.08.26 |
23. 컴퓨터 구조 - 메모리 시스템의 이해 (0) | 2021.08.25 |
22. 컴퓨터구조 - 파이프라인과 병렬처리 (0) | 2021.08.19 |
21. 컴퓨터 구조 - 소프트웨어 구조 (0) | 2021.08.17 |
댓글