메모리
프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간입니다.
메모리계층은 레지스터, 캐시, RAM과 같은 주기억장치, 하드디스크와 같은 저장장치로 구성되어 있습니다.
- 레지스터
- CPU 안에 있는 작은 메모리입니다.
- 속도 가장 빠르고 기억 용량이 가장 적습니다.
- 휘발성 메모리입니다.
- 캐시
- 자주 사용하는 데이터를 미리 복사해 놓는 임시 저장소입니다.
- CPU안에 있는 L1, L2 캐시는 빠른 장치인 CPU와 상대적으로 느린 장치인 주기억장치(RAM) 사이의 속도 차이에 따른 병목현상을 줄여주기 위해 존재합니다.
- CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상합니다.
- 이렇게 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 캐싱 계층이라고 합니다.
- 휘발성 메모리입니다.
- 주기억장치
- 속도와 기억 용량이 보통입니다.
- 휘발성 메모리입니다.
- 보조기억장치
- 속도는 느리고 기억 용량이 많습니다.
- 위의 메모리들과 달리 비휘발성입니다.
메모리계층의 속도를 비교해 보자면
레지스터 > 캐시 > 주기억장치 > 보조기억장치
이고 용량을 비교하면
보조기억장치 > 주기억장치 > 캐시 > 레지스터
입니다.
캐시
캐시에는 3가지 동작이 있습니다.
- 캐시동작
- 캐시히트
- 캐시에서 원하는 데이터를 찾은 것
- 캐시미스
- 해당 데이터가 캐시에 없어 주메모리로 가서 데이터를 찾아오는 것
- 캐시매핑
- 캐시가 히트되기 위해 매핑하는 방법
- 캐시히트
- 캐시미스 원인
- Cold miss
- 캐시에 데이터가 저장되려면 메모리를 적어도 한번 거쳐야 합니다. Cold miss는 해당하는 메모리에 처음 접근하여 발생하는 미스입니다.
- Conflict miss
- 캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스입니다.
- 예를 들어 캐시의 공간이 1,2,3,4,5가 있다고 할 때 메모리의 A와 B데이터가 똑같이 2번 데이터에 넣는다고 미리 약속을 했을 때 2번 자리에 두 개의 데이터가 들어갈 수 없어서 미스가 발생합니다.
- Capacity miss
- 사용하려는 프로그램의 데이터양이 캐시 용량보다 클 시 발생하는 미스입니다.
- Cold miss
- 캐시 타입 종류
- Direct Mapped Cache
- 하나의 캐시 엔트리(캐시 공간)를 가지는 여러 개의 세트(메모리) 구성합니다.
- A는 1번 캐시자리, B는 2번 캐시자리, C는 3번 캐시자리, D는 1번 캐시자리처럼 미리 정해둡니다.
- Conflict miss가 발생합니다.
- Fully Associative Cache
- 모든 캐시 엔트리를 하나의 세트에 포함시킵니다.
- 1번 캐시자리에 A, B, C, D 2번, 3번 캐시자리도 마찬가지로 모두 포함시킵니다.
- Conflict miss를 줄일 수 있으나 매번 모든 캐시 엔트리를 확인해야 하기 때문에 많은 전력을 소비합니다.
- Set Associative Cache
- 적절한 개수의 엔트리를 하나의 세트에 포함
- Direct Mapped Cache
'CS > OS' 카테고리의 다른 글
메모리 할당 (0) | 2023.02.13 |
---|---|
가상 메모리 - 페이지 교체 알고리즘 (0) | 2023.02.12 |
가상 메모리 (0) | 2023.02.11 |
컴퓨터의 요소 - CPU (0) | 2023.01.26 |
운영체제의 역할과 구조 (1) | 2023.01.26 |