YYYEJI

[MIPS] Data Mapping(2-Set Associate) 본문

Computer architectures

[MIPS] Data Mapping(2-Set Associate)

YEJI ⍢ 2022. 12. 17. 20:57
728x90

Set Associate Cache란?

Lower lever(ex. HD, memory)에서 data를 가져(loading)올 때 data가 들어갈 (upper level의)주소가 정해져 있는 operation입니다.

Direct mapped랑 달리 set에서는 여러 개의 block이 set의 개수만큼 들어갈 수 있으며,

Direct mapped는 다른 유효한 data가 들어오기 위해 현재 있는 cache의 값을 미뤄버려야 하지만

set associate는 그럴 필요가 없다는 것이 장점입니다.

 

 

Data가 들어갈 자리는 아래와 같은 공식으로 구할 수 있습니다.

Location in the Cache = (Block address) modulo (Number of Sets in the Cache)

 

 

Index - Data가 들어갈 upper level의 주소

Tag - 현재 upper level에 존재하는 데이터의 유효성

Data - Data

 

 

Direct mapped에서도 언급했듯이 아래와 같이 cache가 존재한다고 가정했을 때 Index는 위치 정보일 뿐 cache는 아닙니다.

Index
(Set)
Tag Data Tag Data Tag Data Tag Data
0                
1                

 

 

0000(0)

0110(6)

0000(0)

0100(4)

1001(9)

 

2-Set associate에서는 마지막 한 bit가 data가 들어갈 주소(index)입니다.

Index Tag Data Tag Data Tag Data Tag Data
0 000 Memory[1]            
1                

 

 

0000(0)

0110(6)

0000(0)

0100(4)

1001(9)

Index Tag Data Tag Data Tag Data Tag Data
0 000 Memory[0] 011 Memory[6]        
1                

 

 

 

0000(1)

0110(6)

0000(0)

0100(4)

1001(9)

 

Data가 존재하기 때문에 hit입니다.

Index Tag Data Tag Data Tag Data Tag Data
0 000 Memory[0] 011 Memory[6]        
1                

 

 

 

0000(0)

0110(6)

0000(0)

0100(4)

1001(9)

Index Tag Data Tag Data Tag Data Tag Data
0 000 Memory[0] 011 Memory[6] 010 Memory[4]    
1                

 

 

 

0000(0)

0110(6)

0000(0)

0100(4)

1001(9)

Index Tag Data Tag Data Tag Data Tag Data
0 000 Memory[0] 011 Memory[6] 010 Memory[4]    
1 100 Memory[9]            

 

 

 

 ◡̈