이번 포스팅에서는 Cache에 관한 내용을 알아보자.
💻 Cache Memory
컴퓨터에는 여러가지 메모리가 있다. 메모리란 데이타를 저장하는 어떠한 것을 의미하며 레지스터,Dram 등 여러가지 종류가 있다. 오늘은 그 중 Cache에 대해서 알아보자.
캐시(Cache) 메모리란 CPU와 Main Memory 사이에 있는 메모리로 레지스터보다는 느리지만, DRAM보다는 빠른 메모리이다. 자주 쓰는 것들을 캐시에 넣어놓고 CPU가 MM에 요청을 보낼때 먼저 캐시에 들러서 해당하는 데이터가 있는지 확인한다. 있다면 캐시에 있는 데이타를 갖고오면 빠르지 않을까?
예를 들어보자.
내가 있는 곳과 먼 곳에 책장이 있다. 책을 읽을때마다 책장에 가야하면 매우 번거롭다. 그럴때 오늘도 읽고, 내일도 읽고 하는 책들을 내주위에 뺴두면, 아주 편할거다. 여기서 자주 읽는 책을 곁에 빼두는 것이 캐시의 목적과 동일하다.
캐시는 one level 처럼 하나만 쓰일수도 있고 Multi-level 처럼 여러개가 쓰일 수도 있다.
보통 3개정도 쓰이는데, 하나만 쓰는 것보다 캐시에 들어갈 수 있는 것들이 많아진다. 그래서 3개정도 쓰면, 메모리를 거의 안간다고 한다.
그리고 캐시에 들어갈 수 있는 것은 메인메모리의 것들이다. 그리하여, 캐시가 많아진다고 해서 정확도가 달라지는 것은 아니고, 성능만 영향을 받는다.
밑 3-level 캐시에서, level 1 캐시에는 제일 자주 쓰이는 데이터들이 들어간다. level 1 보다 3가 캐시의 크기는 더 클것이다.
어짜피, 거의 모든 데이터들은 3개의 캐시안에 더 들어가므로, 하나의 캐시를 더 써서 성능을 올리기에는 올라가는 성능의 폭이 너무 줄어든다. 따라서, 3개정도가 적당하다.
💻 Locality
Locality를 한국어로 직역하면 '지역성'이라고 나온다.
여기서는 기준이라고 생각하면 조금 더 편할 것 같다. 무엇이라고 해석하기 보다는, Locality 그 자체로 이해하는게 편할거라 말씀도 하셨다.
캐시에 무슨 데이타들이 어떤 기준으로 들어갈지 궁금할 것이다.
총 2가지 Locality에 맞추어 캐시의 데이타들이 들어간다.
1. Temporal Locality
- 최근에 접근했던 주소값을 다시 접근하는 경향
- 한번 접근된 적이 있었다면, 그것은 자주 접하게 되지 않을까?라는 생각이다.
2. Spatial locality
- 최근 접근했던 주소값 근처의 주소들을 접근하는 경향
- 한번 사용했던 주소의 근처 영역은 접근이 이루어질 확률이 상대적으로 높다.
- 배열을 생각하면 편하다.
캐시에는 모든 데이타가 들어갈 수 없다. 그래서 기왕 넣을거, Temporal Locality, Spatial Locality에 맞추어 원하는 주소값을 캐시에 넣는다. 따라서, 캐시는 더 낮은 레벨의 메모리들보다 작지만 비싸다.
💻 Cache Terminology
캐시에 관한 용어들을 정리해보자.
- Block(or line) : 정보를 나타내는 가장 작은 메모리 단위이다.
- Hit : 캐시에 요청이 도착했을때, 대응하는 데이타나 값이 있는 경우이다.
- Hit rate : 요청(메모리 접근) 중에 hit의 비율
- Miss : 캐시에 요청이 도착했을 때, 대응하는 데이타나 값이 없는 경우디ㅏ.
- Miss rate : 요청(메모리접근) 중에 Miss의 비율
- Hit time : 상위 클래스에 도달하는 시간 - 이것을 줄이는것이 성능에 직접적인 영향을 준다.
- Miss penalty : 메모리에 존재하는 block을 캐시로 복사하여, 해당 블록을 CPU로 전달하는 시간
'2-2 > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] Cache Miss Handling (0) | 2022.11.25 |
---|---|
[컴퓨터 구조] Direct- mapped Cache (0) | 2022.11.25 |
[컴퓨터 구조] Data Hazard (0) | 2022.11.23 |
[컴퓨터 구조] Pipeline (0) | 2022.11.23 |
[컴퓨터 구조] Type of Instructions (0) | 2022.10.11 |