본문 바로가기

CS/운영체제

캐시 메모리

캐시 메모리

캐시 메모리속도가 빠른 장치와 느린 장치 간의 속도 차이에 의해 발생하는 병목 현상을 줄이기 위한 범용 메모리이다. CPU가 메인 메모리에 접근하기 전에 캐시 메모리에서 원하는 데이터의 존재 여부를 확인하는데, 이때 필요한 데이터가 있는 경우 Hit(적중), 없는 경우 Miss(실패)라고 한다. 요청한 데이터를 캐시 메모리에서 찾을 확률을 Hit Ratio(적중률)이라고 하며, 캐시 메모리의 성능은 이 적중률에 의해 결정된다.

캐시의 종류

캐시 메모리의 작동 순서는 L1에서 순차적으로 데이터를 찾아 L2, L3로 올라가며 데이터를 찾는다.

L1 Cache

CPU와 가장 가까운 캐시이며, 속도를 위해 IC와 DC로 나뉜다.

  • IC(Instruction Cache) : 메모리에서 text 영역의 데이터를 다루는 캐시
  • DC(Data Cache) : 메모리에서 text 영역을 제외한 데이터를 다루는 캐시

L2 Cache

용량이 L1보다 크며, 크기를 위해 L1 Cache와 같이 나누지 않는다.

 

L3 Cache

멀티 코어 시스템에서 코어가 공유하는 캐시이다.

전송 단위

Word(워드)

CPU의 기본 처리 단위이며, 블록/라인을 구성하는 기본 단위이다.

 

Block(블록)

메모리를 기준으로 잡은 캐시와의 전송 단위이다. 캐시 라인과 크기가 같으며, 메모리 블록은 여러 개의 워드로 구성되어 있다.

 

Cache-line(캐시 라인)

메모리 블록과 동일한 크기의 캐시 관점의 캐시이다. 메모리 간의 전송 단위이다.

캐시는 여러 개의 캐시 라인으로 이어져 있으며, 각 라인은 여러 개의 워드로 구성되어 있다.

메인 메모리의 내용을 캐시에 저장하기 위해서 메인 메모리의 데이터를 읽어와야 한다.

이때, 읽어 들이는 최소 단위를 캐시 라인이라 하며, 이렇게 읽어 들인 데이터는 캐시의 data block을 구성하게 된다.

캐시의 쓰기

캐시는 데이터를 읽을 때, 빠르게 읽기 위해서 사용하는 저장공간으로만 알고 있다. 하지만 캐시는 쓰기 명령을 수행할 때도 사용된다.

 

write through(동시에 쓰기)

CPU가 데이터를 사용하면 캐시에 저장되는데, 데이터가 캐시 됨과 동시에 메인 메모리에 기입하는 방식이다. 즉, 캐시와 메모리 2개가 동시에 업데이트되는 방식이다. 캐시와 메모리에 업데이트를 같이하여 데이터의 일관성을 유지할 수 있어 안정적이지만, 데이터에 대한 쓰기를 요청할 때마다 항상 메인 메모리에 접근해야 하므로 캐시에 의한 접근 시간의 개선이 없어지게 된다.

 

wirte back(나중에 쓰기)

캐시 안에 있는 내용을 버릴 때 메인 메모리에 기록하는 방식이다. 즉, 데이터를 쓸 때 메모리에는 쓰지 않고 캐시에만 업데이트하다가 필요할 때에만 메인 메모리에 기록하는 방식이다. write through보다 훨씬 빠르지만, 캐시와 메인 메모리 데이터의 값이 서로 다른 경우가 발생할 수 있다.

'CS > 운영체제' 카테고리의 다른 글

메모리 구조  (0) 2022.12.19
캐시의 지역성  (0) 2022.12.15
가상 메모리  (0) 2022.12.14
메모리 할당과 단편화  (0) 2022.12.12
메모리 관리 전략  (0) 2022.12.09