본문 바로가기

CS/컴퓨터구조

캐시메모리

- 캐시는 최근에 사용했거나 자주 사용되는 내용을 저장한다.

- CPU와 주기억장치 사이에 있는 고속 메모리에 주기억장치 내용의 일부를 카피해 두고 메모리 참조의 국부성을 이용하여 블록 단위로 데이터를 전송한다.

- 캐시의 용량이 클수록 적중률이 높아지지만 주소 해독 및 정보 인출을 위한 주변 회로가 더 복잡해지기 때문에 액세스 시간이 다소 더 길어진다.

- 특정한 정보가 필요한 경우 먼저 고속의 캐시에 있는지를 조사하여 있으면 직접 사용하고, 그렇지 않으면 저속의 하위 장치에 있는 정보를 사용하는데, 만일 이 정보가 다시 사용될 확률이 높으면 캐시에 복사한다.

- 가장 빠르고 융통성 있는 캐시 구조는 연관기억장치를 사용하는 것이다.

- 원하는 내용이 캐시메모리에 있는 경우는 Hit이고, 없는 경우는 Miss이다.

- 캐시의 적중률을 구하여 성능을 측정하며, 적중률이 90%이상이어야 한다.

Hit Ratio = Hit / (Hit + Miss) * 100

방식

- 캐시는 주기억장치보다 크기가 훨씬 더 작기 때문에 캐시의 슬롯이 여러 개의 주기억장치 블록들에 의해 공유된다.

- 그러므로 어떤 주기억장치 블록들이 어느 캐시 슬롯을 공유할 것인지를 결정해 주는 방법이 필요하다.

직접 사상

- 주기억장치의 블록들이 지정된 어느 한 캐시의 슬롯으로만 사상될 수 있다.

- 구조가 간단하고, 구현하는 비용이 적게 든다.

- 주기억장치 블록마다 적재될 수 있는 캐시 슬롯이 한 개이므로, 어떤 프로그램의 수행 과정에서 같은 슬롯에 사상되는 두 개의 블록들로부터 데이터들을 번갈아 읽어 와야 한다면 그 블록들은 캐시에서 반복적으로 교체될 것이고, 결과적으로 적중률이 낮아진다.

 

완전-연관 사상

- 연관기억장치를 이용하여, 주기억장치의 블록들이 캐시의 어떤 슬롯이로든 적재될 수 있도록 허용하는 방식이다.

- 새로운 블록이 캐시로 적재될 때 슬롯의 선택이 자유롭기 때문에 프로그램 세그먼트나 데이터 배열 전체가 캐시로 적재될 수도 있다. 만약 지역성이 높다면 적중률이 매우 높아지지만 캐시 슬롯들의 태그를 병렬로 검사하기 위한 하드웨어 구조는 복잡하고 비용이 높기 때문에 실제 시스템에서는 거의 사용하지 않는다.

 

세트-연관 사상

- 직접 사상 방식과 완전-연관 사상 방식의 장점만을 취한 절충안이다.

- 주기억장치 블록들은 지정된 어느 한 세트를 공유하며, 각 세트에는 다수의 슬롯들이 있으므로 직접 사상 방식에 비해 기억장치 블록이 적재될 수 있는 공간이 더 많아진다.

- 예를 들어 4개의 슬롯들로 이루어진 캐시에서 각 세트에 2개씩의 슬롯을 둔다면 세트 수가 2개가 되지만, 세트에 슬롯을 4개 둔다면 세트 수는 1개가 된다.

 

캐시의 쓰기방식

- 캐시는 프로그램 속도를 빠르게 하기 위한 운송업체 같은 역할일 뿐 실제 프로그램은 메인 메모리에서 수행한다. 따라서 캐시의 데이터가 변화하면 메인 메모리에도 똑같이 반영이 되어야 프로그램을 완벽하게 수행할 수 있으므로 캐시의 내용을 메모리에 다시 반영하는 쓰기 정책이 필요하다.

 

Write Through

가장 간단한 기법으로 캐시에 생기는 변화가 즉각적으로 메인 메모리에 반영이 되어지는 것이다. 하지만 메인 메모리의 사용량이 증가하여 병목현상이 발생할 수 있다.

 

Write back

위의 방법을 보완하는 방법으로 캐시 내의 데이터만 갱신이 되고 메모리는 나중에 캐시에서 데이터를 다시 가져오는 과정에서 갱신이 되는 점이다. 따라서 캐시의 데이터와 메모리의 데이터가 서로 달라지는 모습을 자주 보이는데 이 상태를 Dirty, 더럽혀 졌다고 한다. 속도는 개선되는 방면에 회로가 복잡하고 디바이스를 제어하는 경우 캐시의 내용을 디바이스로 전달을 안하는 경우가 간혹 발생한다.

'CS > 컴퓨터구조' 카테고리의 다른 글

CISC와 RISC  (0) 2021.02.19
주변장치 연결 방식(버스)  (0) 2021.02.19
파이프라인  (0) 2021.02.19