Computer Science/컴퓨터 구조

[컴퓨터 구조] Handling Cache Miss & Write

바보1 2022. 11. 23. 14:14

앞의 글을 읽으시면 이해에 도움이 됩니다.

 

 

2022.11.23 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Direct Mapping

 

[컴퓨터 구조] Direct Mapping

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.11.22 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] The Basic of Cache [컴퓨터 구조] The Basic of Cache 앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.11.22 -

hi-guten-tag.tistory.com


1. Handling Cache Miss

 

 

Cache miss를 해결하기 위해 캐시를 위한 Control이 존재합니다.

Control unit은 반드시 miss를 발견해야 하고, 메모리에서 데이터를 반입함으로써 miss를 해결해야 합니다.

만약 hit이라면 아무 일이 없던 것처럼 데이터를 사용합니다.

 

이때 miss가 발생한다면 CPU Control은 다음과 같이 수행됩니다.

 

  1. CPU pipeline을 stall 한다.
  2. 메모리에서 block을 반입한다.
  3. 만약 instruction cache가 miss라면 instruction을 다시 반입한다.
  4. 만약 data cache가 miss라면 데이터에 다시 access 한다.

 

만약 miss가 아닌 hit이 발생하고, 캐시의 값을 바꾼다면 메모리의 값에는 어떻게 적용할까요?


2. Handling Writes

 

 

앞선 글에서 캐시의 데이터들은 모두 메모리에 있는 데이터의 subset이라고 말씀드렸습니다.

따라서 캐시의 값을 바꾼다면 반드시 메모리의 값도 바꿔줘야 합니다.

 

여기서 메모리에 값을 입력하는 세 가지 방법이 있습니다.

write-through, write buffer, write-back 방식이 존재합니다.

write-through부터 봅시다.


2.1 Write-Through

 

 

write-through는 캐시와 메모리의 불일치를 해결하기 위한 가장 간단한 방법입니다.

 

캐시에 데이터를 쓸 때, 동시에 메모리에도 값을 입력함으로써 해결합니다.

하지만 이렇게 된다면 속도가 매우 느려지는 것이 단점입니다.


2.2 Write Buffer

 

 

write buffer는 write-through의 느린 속도를 해결하기 위한 방법입니다.

 

만약 CPI = 1이고, 명령어의 10%가 100 cycle인 write라고 생각한다면, 실제 CPI는 1 + 0.1 * 100 = 11이 됩니다.

이를 해결하기 위해 캐시에 데이터를 쓴다면, 이를 바로 메모리에 쓰지 않고, 

write buffer라는 곳에 차곡차곡 저장합니다.

 

write buffer는 processor캐시(데이터)를 쓰지 않을 때, 혹은 buffer가 가득 찼을 때 메모리에 값을 입력합니다.

그럼에도 불구하고 write buffer에 데이터를 입력하는 시간이 존재하고, write buffer의 값을 메모리에 입력할 때 stall이 발생합니다.


2.3 Write-Back

 

 

write-back은 위의 문제를 해결합니다.

 

data-write hit이 발생하면, processor는 캐시의 그냥 block을 업데이트합니다.

추가적으로 캐시의 dirty bit를 생성하여, 해당 캐시가 업데이트 되었다는 것을 알립니다.

dirty bit는 processor가 캐시에 write 할 때 생성됩니다.

 

이때 write-back이 변경된 캐시의 값을 메모리에 값을 입력하는 방식은 다음과 같습니다.

기존의 캐시의 a 장소에는 b 메모리의 값이 들어있다고 가정합니다.

이때 c 메모리의 값이 캐시의 a 장소에 들어가려고 하는 상황이라 가정합니다.

 

c 메모리의 값을 캐시의 a 장소에 옮길 때, a 장소의 dirty가 1이면 원래 장소인 b 메모리에 입력합니다.

 

이상입니다.

 

 

다음 글에서는 Associative Cache에 대해 작성하도록 하겠습니다.

 

2022.12.04 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Associative Mapping, Cache

 

[컴퓨터 구조] Associative Mapping, Cache

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.11.22 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] The Basic of Cache [컴퓨터 구조] The Basic of Cache 앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.11.22 -

hi-guten-tag.tistory.com

 

감사합니다.

 

지적 환영합니다.