개인 공부/메모리

MSHRs(Miss Status Holding Register)

RyoTTa 2021. 6. 10. 13:58
반응형

MSHRs(Miss Status Holding Register)

 

"Miss Buffer"라고도 불린다.

즉 CPU가 실행하기 위한 데이터가 Cache에 존재하지 않은 Miss 상태일때, 필요한 데이터를 하위 메모리 계층에서 가져와야 한다. 이러한 과정에서 CPU stall을 방지하기 위해 MSHRs를 사용하게 된다.

 

 미해결 Cache miss를 Track한다.

 누락된 Cache Block을 참조하는 Pending Load/Store Access를 Tracking 한다.

 

 

Fields of a single MSHR

 Valid Bit

 Cache block address (incoming accesses와의 match를 판단하기 위해)

 Control/Status bits (Prefetch, issued to memory, which subblocks have arrived, etc...)

 Data for each subblock

 For each pending load/store

 Valid, type, data size, byte in block, destination register or store buffer entry address

 

MSHRs 구조

 

MSHR in Action 

 

Cache Miss 시 : 

  MSHR에서 동일한 Cache Block에 대한 Pending(보류)중인 Access를 검색한다.

    Found : 동일한 MSHR 항목에 Load/Store entry를 할당한다.

    Not Found : 새 MSHR 할당

    No free entry : Stall

 

Subblock이 메모리의 하위 계층에서 Return 될 때(Data가 하위 계층에서 도착) : 

  대기중인 Load/Store 확인

    Load/Store Device에 데이터 전달

    MSHR 항목에서 Load/Store entry 할당 해제

  Cache 또는 MSHR에 Subblock write

  마지막 Subblock인 경우 MSHR을 할당 해제(Cache에 block을 write한후)

 

즉, MSHRs의 역할은 상위 레벨 메모리 계층에서 Miss가 발생했을 경우, stall을 피하기 위해 하위 레벨 메모리 계층에서 수신된 데이터를 처리하는 특수한 레지스터, 

반응형