YYYEJI

[MIPS] Data Mapping(Direct Mapped) 본문

Computer architectures

[MIPS] Data Mapping(Direct Mapped)

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

Direct Mapped Cache란?

Lower lever(ex. HD, memory)에서 data를 가져(loading)올 때 data가 들어갈

(upper level의) 주소가 정해져 있는 operation입니다.

 

 

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

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

 

 

Index(n bits) - Data가 들어갈 upper level의 주소

Valid bit(1 bit) - 현재 upper level에 존재하는 데이터의 유효성

Tag(32-n-2bits) - 현재 upper level에 존재하는 데이터의 유효성

Data(32bits) - Data

 

 

아래와 같은 Cache가 존재한다고 가정했을 때 Index는 위치 정보일 뿐 cache는 아닙니다.

Index
(Block)
Valid Tag Data
0000 N    
  N    
  N    
. . . N    
  N    
  N    
  N    
1111 N    

Cache의 주소가 1024 words라고 가정하면 index는 총 10bits가 필요합니다.

Tag는 index와 byte bits를 뺀 size이기 때문에 32-10-2가 됩니다.

마지막으로 1 bit은 데이터의 유효성을 판단하는 valid bit입니다.

 

 

Cache의 size를 식으로 나타내면 아래와 같이 나타낼 수 있습니다.

2^n (32+(32-n-2)+1) 

Index - Data - Tag- Valid

 

 

 

Data가 아래와 같은 순서로 들어간다고 가정하고 cache에 넣어보겠습니다.

(index는 3bits)

 

1. 10110

(22)

2. 11010

3. 10000

4. 00011

5. 10010

 

1번째 data인 22를 8로 나누고 나머지를 주소값으로 생각해서 data를 넣게 됩니다.

더 쉽게 생각해서 2진수로 봤을 때 index가 3bits이기 때문에 마지막 3bits를 확인해서 그 주소에 넣으면 됩니다.

Tags는 주소 bits를 제외한 나머지 bits입니다.

Index V Tag Data
000 N    
001 N    
010 N    
011 N    
100 N    
101 N    
110 Y 10 Memory[10110]
111 N    

 

 

 

1. 10110 

2. 11010

3. 10000

4. 00011

5. 10010

Index V Tag Data
000 N    
001 N    
010 Y 11 Memory[11010]
011 N    
100 N    
101 N    
110 Y 10 Memory[10110]
111 N    

 

 

1. 10110 

2. 11010

3. 10000

4. 00011

5. 10010

Index V Tag Data
000 Y 10 Memory[10000]
001 N    
010 Y 11 Memory[11010]
011 N    
100 N    
101 N    
110 Y 10 Memory[10110]
111 N    

 

 

1. 10110 

2. 11010

3. 10000

4. 00011

5. 10010

Index V Tag Data
000 Y 10 Memory[10000]
001 N    
010 Y 11 Memory[11010]
011 Y 00 Memory[00011]
100 N    
101 N    
110 Y 10 Memory[10110]
111 N    

 

 

1. 10110 

2. 11010

3. 10000

4. 00011

5. 10010

현재 들어가야될 index에 데이터가 존재하기에 유효한 데이터인지 tag로 파악해야 됩니다.

Tag가 다른 것을 보고 유효한 데이터가 아님을 파악하고, tag와 data가 바뀝니다.

Index V Tag Data
000 Y 10 Memory[10000]
001 N    
010 Y 10 Memory[10010]
011 Y 00 Memory[00011]
100 N    
101 N    
110 Y 10 Memory[10110]
111 N    

 

 

 

 ◡̈

'Computer architectures' 카테고리의 다른 글

[MIPS] Data Mapping(2-Set Associate)  (0) 2022.12.17
[MIPS] Data Mapping(Fully Associate)  (0) 2022.12.17
[MIPS] block, hit, miss (Memory Hierarchy)  (0) 2022.12.03
[MIPS] Memory hierarchy (locality)  (0) 2022.12.03
[MIPS] Performance  (0) 2022.11.28