๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸฉ Computer Architecture

์ปดํ“จํ„ฐ ๊ตฌ์กฐ 5_Cache Memory

by UKHYUN22 2021. 11. 29.
728x90

 

Read Hit 
ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์—์„œ ์ฝ๋Š” ๊ฒƒ
Read Misses
์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๋ธ”๋Ÿญ์„ fetchํ•ด์™€์„œ cache๋กœ ์ €์žฅํ•œ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ๋‹ค.
Stall the CPU ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ freezing ํ•ด ๋†“๋Š”๋‹ค. CPU๊ฐ€ ์ผ์— ๊ด€์—ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. ์ €์žฅํ•œ ํ›„ ์— ๋‹ค์‹œ Execution์„ ํ•˜๋ผ๋Š” ์ ˆ์ฐจ๋ฅผ ๋ฐŸ๊ฒŒ ๋œ๋‹ค. 4์žฅ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ Pipleine์ด Cache๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ๋‹ค. Instruction Cache์™€ Data Cache๋ฅผ ๋”ฐ๋กœ ๋‘๊ณ  ์‚ฌ์šฉ์„ ํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค. ์ฆ‰, Instruction Memor ์™€ Data Memory๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Cache๊ฐ€ ๋”ฐ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค(4์žฅ์—์„œ ํ’€์ง€ ๋ชปํ–ˆ๋˜ ์˜๋ฌธ์ด ์—ฌ๊ธฐ์„œ ํ’€๋ฆผ)

 


Instruction Cache์™€ Data Cache์˜ ๊ณตํ†ต์ ์€ 2,3,4 ๋ฒˆ์ด๋‹ค.
ํ•œ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค๋ฉด Instruciton์˜ ๊ฒฝ์šฐ PC์˜ ๊ฐ’์„ 4๋งŒํผ ๊ฐ์†Œ์‹œ์ผœ์•ผ ํ•œ๋‹ค. PC์˜ ๊ฐ’์„ ํ†ตํ•ด์„œ Istruction์„ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•  ๋•Œ ๋™์‹œ์— 4๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜์ง€๋งŒ Miss๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ stall๋˜๊ณ  ๋‹ค์‹œ Instruction์„ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”๋ฐ ๊ทธ ์ „์— Access๊ฐ€ ์•„๋‹Œ 4๊ฐ€ ์ฆ๊ฐ€๋œ ๊ฐ’์ด ์กด์žฌํ•˜๋ฏ€๋กœ 4๋งŒํผ ๋‹ค์‹œ ๊ฐ์†Œ์‹œํ‚ค๊ณ  ๊ฐ€์ ธ์™€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋Š”๋ฐ ๊ธฐ์กด์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ ๊ฐ’์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

์„ ํƒ์€ ๋‘ ๊ฐ€์ง€์ด๋‹ค. ๊ธฐ์กด์— ์žˆ๋˜ ๊ฒƒ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•  ๊ฒƒ ์ธ๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ฒ„๋ฆด ๊ฒƒ์ธ๊ฐ€์˜ ์„ ํƒ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 


์ด๊ฒƒ์€ ์“ฐ๊ธฐ Write๋ฅผ ํ•  ๋•Œ ๋‹ฌ๋ผ์ง„๋‹ค.
1. Write Through
Data Cache๊ฐ€ 0์—์„œ 1๋กœ ๋ฐ”๋€Œ๋ฉด ๊ทธ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋„ 0์—์„œ 1๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
Both the block in the cache and the main memory.
์ด๋Ÿฐ ๊ฒฝ์šฐ์˜ Cache์˜ ๊ฐ’๊ณผ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์ด ํ•ญ์ƒ ์ผ์น˜ํ•œ๋‹ค.
miss์˜ ๊ฒฝ์šฐ ์ฝ์œผ๋ ค๊ณ  ํ•  ๋•Œ ์›ํ•˜๋Š” ๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”๋ฐ Cache์˜ ๊ฐ’๊ณผ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์ด ์ผ์น˜ํ•˜๋ฏ€๋กœ ๋ฌด์‹œํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ฐ’์„ ๊ทธ๋ƒฅ overwrite ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. ์ฝ์œผ๋ ค๊ณ  ํ•  ๋•Œ miss์˜ ๊ฒฝ์šฐ ๋น ๋ฅด๋‹ค(*****) ๋‹จ์ ์€ ์บ์‹œ์— ์“ฐ๋ ค๊ณ  ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์—๋„ ์จ์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. 

 

 


Write Through
00100์˜ Block์„ accessํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ƒํ™ฉ์—์„œ Cache์˜ 100์˜ ์œ„์น˜๋กœ ๊ฐ€์„œ 12๋ผ๋Š” ๊ฐ’์„ ์“ฐ๊ฒŒ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์—๋„ ์—ญ์‹œ
00100์— ํ•ด๋‹นํ•˜๋Š” ๊ณณ์˜ ๊ฐ’๋„ 12๋กœ ์จ์ค€๋‹ค.  11100์ด๋ผ๋Š” ์ฃผ์†Œ์— accessํ•˜๋ ค๋ฉด ์ผ๋‹จ miss๊ฐ€ ๋‚˜๊ณ  11100 ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์„
๊ฐ€์ ธ์˜ค๊ณ  15๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ 11์ด๋ผ๊ณ  Tag๋ฅผ ๋ฐ”๊ฟ”์ค€๋‹ค.

 


Write Back
ํ”„๋กœ์„ธ์„œ๊ฐ€ ์บ์‹œ์— ๊ฐ’์„ ์“ธ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‘๊ณ  ์บ์‹œ๋งŒ ์“ฐ๋Š” ๊ฒฝ์šฐ์ด๋‹ค. coherenceํ•˜์ง€ ์•Š์€ ๊ฒƒ. ์ผ์น˜ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด๊ณ 
์บ์‹œ์˜ ๋ฐ์ดํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

cleanํ•œ๊ฐ€?
์ฒ˜์Œ์— ๊ฐ’์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ์— Cache์˜ ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟจ๋Š”์ง€์˜ ์œ ๋ฌด๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ’์ด ๋ณ€ํ™”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ clean์˜ ๊ฒฝ์šฐ ์ผ์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— updateํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ผ์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์บ์‹œ์˜ ๋ฐ์ดํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด block์„ ์ฝ์–ด์˜ค๋Š” ๊ฒฝ์šฐ ๊ธฐ์กด์˜ ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋‹ค์‹œ writeํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
dirtyํ•œ๊ฐ€?
๊ฐ’์˜ ๋ณ€ํ™”๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด block์„ ๋ถˆ๋Ÿฌ์™”์„ ๋•Œ ๊ธฐ์กด์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

 


๊ทธ๋Ÿฌ๋ฏ€๋กœ writeback ์—์„œ๋Š” Dirty bit 1bit๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 


Write Through์˜ ์žฅ์ 
miss๊ฐ€ ์ผ์–ด๋‚ฌ์„ ๋•Œ ์บ์‹œ์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์ด ๊ฐ™์œผ๋ฏ€๋กœ updateํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค
Write Back์˜ ์žฅ์ 
๋ฉ”๋ชจ๋ฆฌ์— ์“ธ ํ•„์š”๊ฐ€ ์—†์–ด์„œ ์‹œ๊ฐ„์ด ์ ˆ์•ฝ๋œ๋‹ค.
์บ์‹œ์— ์“ธ ๋•Œ๋งˆ๋‹ค Write buffer์—๋„ ์“ฐ๋Š”๋ฐ Processor๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์“ฐ๋Š” ๊ฒƒ ๊นŒ์ง€ ์ƒ๊ด€ํ•˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ Write buffer์˜ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์–ด์ฃผ๋Š” ๊ฒƒ์ด๊ณ  ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ—ˆ๋“œ๋ ›์ผ์„ ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค๋ฅธ ์• ๊ฐ€ write buffer์˜ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ๋Š” ์ผ์— ๊ด€์—ฌํ•œ๋‹ค. 

 


์ผ๋ฐ˜์ ์œผ๋กœ Write back์˜ Performance๊ฐ€ Write Through๋ณด๋‹ค ๋‚ซ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.