일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- python
- Medium
- 고득점Kit
- Level2
- Level3
- 프로그래밍
- react
- Doitvue.js입문
- web
- 코테연습
- LeetCode
- 자바스크립트
- 파이썬
- OS
- CS
- javascript
- typescript
- sql
- 카카오
- 리트코드
- Level1
- 백준
- 동적계획법
- VUE
- dp
- 리액트
- 웹프로그래밍
- 프로그래머스
- 배열
- C++
- Today
- Total
[운영체제] 캐시 Cache 본문
캐시 Cache
캐시 메모리는 속도가 빠른 장치와 느린 장치 간의 속도 차에 따른 병목 현상을 줄이기 위한 범용 메모리이다. 이러한 역할을 수행하기 위해서는 CPU에 어떤 데이터를 원할 것인가를 어느 정도 예측할 수 있어야한다. 캐시의 성능은 작은 용량의 캐시 메모리에 CPU가 이후에 참조할, 쓸모 있는 데이터가 얼마나 들어 있느냐에 따라 좌우된다.
CPU와 주기억장치의 속도 차이로 성능 저하를 방지하기 위해 주기억 장치에 저장된 내용의 일부를 임시로 저장해둔다.
CPU와 상호작용
CPU에서 주소가 전달되면 캐시 메모리에 해당 데이터가 존재하는지 확인한다.
- HIT (존재) : 해당 명령어를 CPU로 전송한다.
- Miss (비존재) : 명령어를 가지고 주기억장치에 접근하여 해당 명령어를 가진 데이터를 꺼내서 캐시에 저장한 후 CPU로 전송한다.
지역성 원리
적중률 (Hit rate)를 높이기 위해서 지역성의 원리를 사용한다. 지역성 (Locality)란 기억 장치 내의 정보를 균일하게 Access하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 성질이 있다는 이론이다.
- 시간 지역성 (Temporal Locality): 최근에 참조된 주소의 내용은 곧 다음에 다시 참조되는 특성
- 공간 지역성 (Spatial Locality): 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성
Caching line
캐시는 프로세서 가까이에 위치하면서 빈번하게 사용되는 데이터를 놔두는 장소이다. 하지만 찾고자 하는 데이터를 찾기 위해 모든 데이터를 순회해야한다면 시간이 오래 걸리게 된다. 즉, 캐시에 목적 데이터가 저장된다면 바로 접근하여 출력할 수 있어야 캐시가 의미 있어진다.
따라서 캐시에 데이터를 저장할 때 특정 자료구조를 사용하여 묶음으로 저장하게 되는데 이를 캐싱라인이라고 한다.
프로세스는 다양한 주소에 있는 데이터를 사용하므로 빈번하게 사용하는 데이터의 주소도 흩어져있다. 따라서 캐시에 저장하는 데이터에는 데이터의 메모리 주소 등을 기록해둔 태그를 달아 놓을 필요가 있다. 이러한 태그들의 묶음을 캐싱 라인이라고 하고메모리로부터 가져올 때도 캐싱 라인을 기준으로 가져온다. 3가지 방식이 존재한다.
Direct Map
여러개의 주소가 캐시 메모리의 한 주소에 대응되는 방식
01 | 011 (D)
Tag Line
태그 필드와 인덱스 필드 위에 데이터를 저장한다.
어떤 요청이 들어오면 캐시 메모리의 해당 인덱스 필드를 확인한다. 데이터가 없다면 직접 메인 메모리의 주소를 참조하여 해당 데이터를 가져와 캐시 메모리에 저장한다.
이후 똑같은 요청이 다시 들어오면 캐시 메모리에 데이터가 있으므로 CPU가 요청한 주소와 같은지 태그 검사를 하고 같으면 캐시 메모리에서 데이터를 가져온다.
여러 개의 주소가 캐시 메모리의 한 블럭에 대응되기 때문에 데이터가 덮어씌워지는 문제가 생길 수 있다.
Full Associative
캐시 메모리에 빈 공간이 있으면 아무렇게나 저장한다. 데이터를 찾기 위해 순회해야하고 이를 방지하기 위해 특수한 메모리 구조를 사용한다.
Set Associative
Direct Mapping과 Associative를 섞은 방식으로 n-way로 사용할 수 있다. n개의 비트를 line으로 해서 같은 line을 가진 주소끼리 묶는다.
DMC에 비해 검색은 오래 걸리지만 저장이 빠르다.
cache를 write 하는 방식
- write -through : 메인과 캐시를 항상 같이 쓴다. 쉽지만 느리고 메모리 트래픽을 증가시킴
- write-back : dirty block이 변경 되었을때만 캐시에 write하고 메인 메모리를 update해준다. 빠르지만 복잡하고 consistency 문제가 생길 수 있음
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 스레드, 프로세스 vs 스레드 (0) | 2022.04.18 |
---|---|
[운영체제] 프로세스 (0) | 2022.04.17 |
[운영체제] 운영체제 (0) | 2022.04.17 |
[운영체제] 가상메모리 (0) | 2022.04.14 |
[운영체제] 메모리 관리 (0) | 2022.04.14 |