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
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을 피하기 위해 하위 레벨 메모리 계층에서 수신된 데이터를 처리하는 특수한 레지스터,
'개인 공부 > 메모리' 카테고리의 다른 글
DMA(Direct Memory Access) (1) | 2021.07.22 |
---|---|
Memory Controller Policy (0) | 2021.06.10 |
DRAM Operation, Memory Control & Memory Latency - 3 (2) | 2021.06.08 |
DRAM Operation, Memory Control & Memory Latency - 2 (0) | 2021.06.07 |
DRAM Operation, Memory Control & Memory Latency - 1 (2) | 2021.06.07 |