캐시 메모리(Cache Memory) : 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
CPU와 주 기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킨다.
장 : 속도 빨라짐 단 : 비용이 비쌈
cpu 에서 속도와 크기에 따라 캐시 메모리를 분류해서 사용함 (ex - L1, L2, L3)
보통 L1 부터 사용 (CPU에서 가장 빠르게 접근, 여기서 찾지 못하면 L2로 가는 식으로 동작)
캐시 메모리 작동 원리
- 시간 지역성 (Time Locality)
- 한번 참조된 데이터는 잠시후 또 참조될 가능성이 높음
- 예) 순환, 서브루틴, 스택, 계산과 집계에 사용되는 변수
- 공간 지역성
- 참조된 데이터 근처에 있는 데이터가 잠시후 또 사용될 가능성이 높음
- 예) 배열 순회, 순차적 코드 실행, 관련된 변수를 함께 선언
캐시에 데이터를 저장할 때는, 이러한 참조 지역성(공간)을 최대한 활용하기 위해 해당 데이터뿐만 아니라, 옆 주소의 데이터도 같이 가져와 미래에 쓰일 것을 대비한다.
CPU가 요청한 데이터가 캐시에 있으면 'Cache Hit', 없어서 DRAM에서 가져오면 'Cache Miss'
캐시 미스 경우 3가지
- Cold miss : 해당 메모리 주소를 처음 불러서 나는 미스
- Conflict miss : 캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스 (direct mapped cache에서 많이 발생)
- Capacity miss : 캐시 메모리의 공간이 부족해서 나는 미스 (Conflict는 주소 할당 문제, Capacity는 공간 문제)
캐시 크기를 키워서 문제를 해결하려하면, 캐시 접근속도가 느려지고 파워를 많이 먹는 단점이 생김
기존에는 인터럽트 S/W 가 처리 했었는데 최근 H/W 가 처리 => 빠르다 why?
H/W - 1클럭 때 interrupt 처리
S/W - 이상적인 상황에도 1클럭 때 명령 1개 처리
OS Service - 일반 프로그램과 다르게 인터럽트에 의해 여러 프로그램 제어
- 프로그램 개발
- 프로그램 실행
- I/O devices 접근
- 파일 접근
- System access
- 에러 감지
주요 interface
- Instruction Set architecture (ISA)
- Application binary interface (ABI)
- Application Programming Interface (API)
'미가공 필기(운영 체제)' 카테고리의 다른 글
OS1 (0) | 2021.07.20 |
---|
댓글