오늘은 맑음

MSHRs(Miss Status Holding Registers) 본문

Processor

MSHRs(Miss Status Holding Registers)

자전거 타는 구구 2019. 2. 27. 17:28
반응형

MSHRs(Miss Status Holding Registers)


만약 cache에서 miss가 발생하면 어떤 과정을 수행할까?

 cache miss가 발생했다는 이야기는 CPU가 명령어를 수행하는데 필요한 데이터가 cache에 존재하지 않다는 의미입니다. 따라서 필요한 데이터를 다시 캐시로 가져오는 과정이 필요합니다. 이 과정에서 MSHRs라는 회로를 사용하게 됩니다.

1. cache에서 miss가 발생하면 먼저 MSHRs을 점검

2-1. cache miss가 발생한 명령어가 MSHRs에 존재하지 않다. 즉, 이 명령어에 대해 처음 miss가 발생

 위와 같은 경우에는 MSHRs를 할당해 해당 명령어에 대한 cache miss를 처리하게 됩니다. 

이 과정에서 상위 레벨의 cache 또는 메인메모리에 요청해 필요한 데이터를 가져오게 됩니다.

2-2. cache miss가 발생한 명령어가 과거에도 miss가 발생했다. 즉, MSHRs이 처리하는 중이다.

 위와 같은 경우에는 이미 MSHRs에 할당되어 데이터를 가져오고 있는 중입니다. 따라서 다시 같은 데이터를 요청할 필요 없이 이전 MSHRs에 통합시킵니다.

2-3. MSHRs이 포화상태이다.

이 상황은 현재 MSHRs에 더이상 할당할 수 없는 상황입니다. 이미 진행중인 cache miss가 발생한 명령어를 처리중이어서 더이상 처리할 수 없는 경우 현재 miss가 발생한 명령어는 stall됩니다.

3.  상위 레벨 cache 또는 메인 메모리로부터 요청한 데이터가 도착하면 할당했던 해당 명령어를 해제

데이터가 도착하면 miss가 발생헀던 명령어에 대한 MSHRs는 필요가 없기 때문에 해제를 해 줍니다. 만약 해제를 해주지 않으면 MSHRs이 포화되어 후속 명령어에서 miss가 발생했을 때 처리를 할 수 없게 됩니다.


MSHRs의 역할

1. 상위 레벨의 캐시 또는 메인 메모리에서 수신받은 데이터를 알맞게 처리

2. 상위 레벨의 캐시 또는 메인 메모리에서 수신받은 데이터 및 기타 상태를 알려주는데 필요한 정보를 보유


MSHRs의 register

 valid bit, 요청한 데이터의 destination address, partial write를 포함한 status/control register들이 있다.


https://www.youtube.com/watch?v=Q9wD8I3Sehc


반응형

'Processor' 카테고리의 다른 글

single precision/half precision  (0) 2019.03.28
Reservation station  (0) 2019.02.27
Data Prefetch  (1) 2019.02.21
multi-thread processor에서의 scoreboard  (0) 2019.02.20
Register Scoreboarding/스코어보드  (2) 2019.02.19
Comments