๐Ÿ“ฆ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€๋ชจํ—˜ โ€“ ์บ์‹œ ๊ตฌ์กฐ, ์ •์ฑ…, ์• ํ”Œ๊นŒ์ง€

GoldenDuskยท2025๋…„ 4์›” 3์ผ
0
post-thumbnail

์บ์‹œ 1ํ™”. 1์ดˆ๋„ ๋ชป ์ฐธ์•„! ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํƒœ์–ด๋‚œ ์ด์œ 

"CPU๋Š” ์™œ ์ด๋ ‡๊ฒŒ ์„ฑ์งˆ์ด ๊ธ‰ํ• ๊นŒ?"

CPU๋Š” ์—„์ฒญ ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ง„์งœ ๋ง๋„ ์•ˆ ๋˜๊ฒŒ ๋น ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฌธ์ œ๋Š” ์ด ๋น ๋ฅธ CPU๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ๋ฐ”๋กœ ๋ชป ๋ฐ›๋Š”๋‹ค๋Š” ๊ฑฐ์˜ˆ์š”. ๋งˆ์น˜ ๋ฐฐ๋‹ฌ์Œ์‹ ์‹œํ‚จ ์‚ฌ๋žŒ์ด ์Œ์‹์ด ์•ˆ ์˜ค์ž ์ง์ ‘ ์‹๋‹น์œผ๋กœ ๋‹ฌ๋ ค๊ฐ€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”. ๐Ÿคฏ

๊ทธ ์ด์œ ๋Š” ๋ฉ”๋ชจ๋ฆฌ(RAM)๊ฐ€ CPU๋งŒํผ ๋น ๋ฅด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์ง€๋งŒ, CPU ์ž…์žฅ์—์„œ๋Š” ๋„ˆ๋ฌด ๋А๋ ค์š”. ๊ทธ๋ž˜์„œ CPU๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๋‹ค ํญ๋ฐœํ•˜์ง€ ์•Š๋„๋ก ์ค‘๊ฐ„์— '์ž„์‹œ ์ €์žฅ์†Œ' ๊ฐ™์€ ๊ฑธ ๋‘” ๊ฒŒ ์บ์‹œ(Cache)์ž…๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์˜ ์ƒ์œ„ ํด๋ž˜์Šค, ์บ์‹œ(Cache)

์ถœ์ฒ˜ : https://woozzang.tistory.com/155

์บ์‹œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ ์ƒ ์ตœ์ƒ๋‹จ ํ‹ฐ์–ด์— ์œ„์น˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํ›จ์”ฌ ์ž‘๊ณ  ๊ฐ€๊ฒฉ์ด ๋งค์šฐ ๋น„์‹ธ๋ฉฐ, ๊ทธ๋งŒํผ ์†๋„๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค.

10 ํด๋Ÿญ ์‚ฌ์ดํด ๋ฏธ๋งŒ์˜ ์ ‘๊ทผ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์บ์‰ฌ(Caches) ๊ฐ€ ๋‘๋ฒˆ์งธ์ธ ๋“ฑ๊ธ‰์— ์œ„์น˜ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CPU์™€ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์˜ ์†๋„ ๊ฐ„๊ทน์„ ์ค„์—ฌ์ฃผ๋Š” ์™„์ถฉ์ œ

์บ์‹œ๋Š” CPU ์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ์†๋„ ๊ฐ„๊ทน์„ ์ค„์—ฌ์ฃผ๋Š” ์™„์ถฉ์žฌ์ด๋ฉฐ, ๋”ฐ๋ผ์„œ ๋ฒ„ํผ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
(์ด ์†๋„ ๊ฐ„๊ทน ๋•Œ๋ฌธ์— ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฒ„ํผ๋Š” ์™„์ถฉ์žฌ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ)

์บ์‹œ์—๋Š” ๋ณดํ†ต ๊ฐ€๊ฒฉ์ด ๋น„์‹ธ๊ณ  ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ ์šฉ๋Ÿ‰ ๋Œ€๋น„ ํฌ๊ธฐ๊ฐ€ ํฐ SRAM ์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๊ฐ€๊ฒฉ์ด ์‹ธ๊ณ  ์†๋„๊ฐ€ ๋А๋ฆฐ DRAM ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์บ์‹œ 2ํ™”: ์ง€์—ญ์„ฑ(Locality) - ์™œ ์บ์‹œ๊ฐ€ ํšจ๊ณผ์ ์ธ๊ฐ€?

์บ์‹œ๋Š” CPU ๊ฐ€๊นŒ์ด์— ๋‘๊ณ , ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•ด์š”.

๊ทธ๋Ÿฐ๋ฐ, ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ์•Œ๊นŒ์š”?

์บ์‹œ์˜ ์ž‘๋™์›๋ฆฌ : ์ง€์—ญ์„ฑ(Locality)์˜ ๋ฒ•์น™

"๋ฏธ๋ฆฌ ์“ธ๋งŒํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์บ์‹œ์— ์˜ฎ๊ฒจ๋†“์ž"

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€ํ†ตํ•˜๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์€ ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ (Locality) ์ž…๋‹ˆ๋‹ค. ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ด ์›๋ฆฌ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

  1. ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ (Temporal locality): ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
  2. ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ (Spatial locality): ์ง€๊ธˆ ์ ‘๊ทผํ•œ ๋ฐ์ดํ„ฐ ๊ทผ์ฒ˜๋„ ๊ณง ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
  3. ์ˆœ์ฐจ์  ์ง€์—ญ์„ฑ( Sequential Locality) : ๋น„์ˆœ์ฐจ์  ์‹คํ–‰์ด ์•„๋‹Œ ์ด์ƒ ๋ช…๋ น์–ด๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๋Š” ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๋‹ค์Œ ์ˆœ์„œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณง ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ์€ A[0], A[1] ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์ฐธ์กฐ๋œ ๋ฐ์ดํ„ฐ ๊ทผ์ฒ˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž ์‹œํ›„์— ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋ณต๋ฌธ ๋Œ๋ฆด ๋•Œ i, i+1, i+2 ์ด๋Ÿฐ ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์ž–์•„์š”? ์ด๊ฑธ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ๋‹ด์•„๋‘๋Š” ๊ฒ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์บ์‹œ๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋ผ์š”:

"CPU๊ฐ€ ๊ฐ€์žฅ ์•„๋ผ๋Š” ์นœ๊ตฌ! ํ•ญ์ƒ ์˜†์— ๋ถ™์–ด ๋‹ค๋‹ˆ๋Š” ๋น„์„œ ๊ฐ™์€ ์กด์žฌ"

์บ์‹œ 3ํ™”. ๋ฉ”๋ชจ๋ฆฌ ๋ฐฐ๋‹ฌ ์‹œ์Šคํ…œ: ์บ์‹œ์˜ 3๋‹จ๊ณ„ ์ž‘์ „

"์•„๋‹ˆ ์บ์‹œ๊ฐ€ ํ•œ ๊ฐœ๋งŒ ์žˆ์œผ๋ฉด ์•ˆ ๋ผ์š”? ์™œ ์ž๊พธ ๊ณ„์ธต์„ ๋‚˜๋ˆ„๋Š” ๊ฑฐ์˜ˆ์š”?"

๐Ÿ“ฆ ์†๋„์™€ ์šฉ๋Ÿ‰์˜ ๋”œ๋ ˆ๋งˆ, ๊ทธ๋ž˜์„œ ์บ์‹œ๋Š” ๊ณ„์ธต์ด ํ•„์š”ํ•ด์š”

๊ทธ๊ฑด ๋ฐ”๋กœ ์†๋„ vs ์šฉ๋Ÿ‰์˜ ๊ท ํ˜• ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

CPU์˜ ์„ฑ๋Šฅ์„ ์ด์•ผ๊ธฐํ•  ๋•Œ "L1 ์บ์‹œ๊ฐ€ ์–ผ๋งˆ๋ƒ", "L2๋Š” ๋ช‡ MB๋ƒ" ๊ฐ™์€ ์–˜๊ธฐ ๋“ค์–ด๋ณด์…จ์„ ๊ฑฐ์˜ˆ์š”. ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU ๋ฐ”๋กœ ์˜†์— ์žˆ๋Š” ์ดˆ๊ณ ์† ๋ฉ”๋ชจ๋ฆฌ๋กœ, ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ ์šฉ๋Ÿ‰์€ ์ž‘๊ณ  ๊ฐ€๊ฒฉ์€ ๋น„์‹ธ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์–ด์š”.

๊ทธ๋ž˜์„œ ๋‹จ ํ•˜๋‚˜์˜ ์บ์‹œ๋งŒ ๋‘๊ธฐ๋ณด๋‹ค๋Š”, ์†๋„์™€ ์šฉ๋Ÿ‰ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์žก๊ธฐ ์œ„ํ•ด ๊ณ„์ธต์„ ๋‚˜๋ˆ ์„œ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ L1, L2, L3 ์บ์‹œ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ 'L'์€ Level์˜ ์ค„์ž„๋ง๋กœ, L1์ด ๊ฐ€์žฅ ๋น ๋ฅด๊ณ , L3๋กœ ๊ฐˆ์ˆ˜๋ก ๋А๋ฆฌ์ง€๋งŒ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”.

  • L1 ์บ์‹œ๋Š” CPU ๋ฐ”๋กœ ์˜†์— ์žˆ์–ด์„œ ์ œ์ผ ๋น ๋ฅด์ง€๋งŒ, ๋„ˆ๋ฌด ์ž‘์•„์š”.
  • L2 ์บ์‹œ๋Š” L1๋ณด๋‹จ ๋А๋ฆฌ์ง€๋งŒ, ์กฐ๊ธˆ ๋” ํฌ๊ณ ์š”.
  • L3 ์บ์‹œ๋Š” ์—ฌ๋Ÿฌ CPU ์ฝ”์–ด๊ฐ€ ๊ณต์œ ํ•˜๋ฉด์„œ, ๊ฐ€์žฅ ํฌ์ง€๋งŒ ์ œ์ผ ๋А๋ฆฝ๋‹ˆ๋‹ค.

์ด ๊ตฌ์กฐ๋Š” ๋งˆ์น˜ ๋„์‹œ ์•ˆ์˜ ๋ฐฐ๋‹ฌ ์‹œ์Šคํ…œ๊ณผ๋„ ๋น„์Šทํ•ด์š”:

์บ์‹œ ๊ณ„์ธต๋น„์œ ์†๋„์šฉ๋Ÿ‰์œ„์น˜
L1๋‚ด ์ฑ…์ƒ ์„œ๋ž๋งค์šฐ ๋น ๋ฆ„๋งค์šฐ ์ž‘์Œ (8~64KB)CPU ๋‚ด๋ถ€
L2์ง‘ ๋ณต๋„์— ์žˆ๋Š” ๋ฌผํ’ˆํ•จ๋น ๋ฆ„์ž‘์Œ~์ค‘๊ฐ„ (64KB~4MB)CPU ๋‚ด๋ถ€ or ์™ธ๋ถ€
L3์ง€ํ•˜ ์ฐฝ๊ณ ๋А๋ฆผํผ (๋ช‡ MB ์ด์ƒ)๋ฉ”์ธ๋ณด๋“œ ๋˜๋Š” CPU ๊ณต์œ 

์ด๋ ‡๊ฒŒ ๋‹ค๋‹จ๊ณ„๋กœ ์บ์‹œ๋ฅผ ๋ฐฐ์น˜ํ•˜๋ฉด, ์ž์ฃผ ์“ฐ๋Š” ๊ฑด L1์—, ๊ทธ๋ณด๋‹ค ๋œ ์“ฐ๋Š” ๊ฑด L2, ๊ทธ๋ฆฌ๊ณ  ํฐ ๋ฐ์ดํ„ฐ๋Š” L3์— ์ €์žฅํ•ด์„œ CPU์˜ ์†๋„๋ฅผ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๊ฒฐ๊ตญ ์ด ๊ตฌ์กฐ์˜ ๋ชฉํ‘œ๋Š”:

"CPU๊ฐ€ ๋А๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด, ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊นŒ์šด ์ˆœ์„œ๋Œ€๋กœ ๋‚˜๋ˆ  ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ"

๐Ÿง  L1 ์บ์‹œ๋Š” โ€˜๋ช…๋ น์–ดโ€™์™€ โ€˜๋ฐ์ดํ„ฐโ€™๊ฐ€ ๋”ฐ๋กœ?

ํŠนํžˆ L1 ์บ์‹œ๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ๋„ ํŠน์ดํ•ด์š”. ๋ช…๋ น์–ด ์บ์‹œ(I-Cache) ์™€ ๋ฐ์ดํ„ฐ ์บ์‹œ(D-Cache) ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

  • I-Cache (Instruction Cache): ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ์ด ๋†’์€ ๋ช…๋ น์–ด๋ฅผ ์ €์žฅ
  • D-Cache (Data Cache): ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ์ด ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ

L1 ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU์— ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต๊ธ‰ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ ‘๊ทผ ์ง€์—ฐ ์‹œ๊ฐ„(Access latency)์ด ๋งค์šฐ ์ค‘์š”ํ•œ๋ฐ,

๋ช…๋ น์–ด๋Š” ๋ณดํ†ต ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ์ด ๋†’๊ณ  ๋ฐ์ดํ„ฐ๋Š” ๋ณดํ†ต ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด ๋‘˜์„ ๋‚˜๋ˆ„์–ด ์„œ๋กœ ๋‹ค๋ฅธ ์ง€์—ญ์„ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ„๋ฉด ๋™์‹œ์— ๋ช…๋ น์–ด์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์–ด์„œ CPU์˜ ํŒŒ์ดํ”„๋ผ์ด๋‹ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

L2๋ถ€ํ„ฐ๋Š” ๋ณดํ†ต I/D ๊ตฌ๋ถ„ ์—†์ด ํ•˜๋‚˜์˜ ํฐ ์บ์‹œ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, L1์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชป ์ฐพ์„ ๋•Œ L2๋ฅผ, ๊ทธ๋‹ค์Œ์—” L3๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ด์—์š”.

๐Ÿงช ์‹ค์ œ ๊ตฌ์กฐ ์˜ˆ์‹œ: ARM Cortex-A72

์•„๋ž˜๋Š” ARM Cortex-A72์˜ ๊ตฌ์กฐ์˜ˆ์‹œ๋กœ, ๊ฐ ์บ์‹œ์˜ ์œ„์น˜์™€ ์—ญํ• ์„ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • ๊ฐ ํ”„๋กœ์„ธ์„œ๋Š” ์ž์‹ ๋งŒ์˜ L1 ์บ์‹œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ 
  • ๋ชจ๋“  ํ”„๋กœ์„ธ์„œ๊ฐ€ L2 ์บ์‹œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค
  • ๋ช…๋ น์–ด ์บ์‹œ์™€ ๋ฐ์ดํ„ฐ ์บ์‹œ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ฃ .

๐Ÿ’ก ์บ์‹œ๋Š” ์–ด๋””์— ์žˆ์„๊นŒ? ์œ„์น˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์—ญํ• 

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ โ€œ๋น ๋ฅธ ์ €์žฅ ๊ณต๊ฐ„โ€ ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค. ์–ด๋””์— ์œ„์น˜ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ์ ‘๊ทผ ์†๋„์™€ ์šฉ๋„๊ฐ€ ๋‹ฌ๋ผ์ง€๊ณ , CPU ์ „์ฒด ์„ฑ๋Šฅ์—๋„ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

โœ… L1 ์บ์‹œ: CPU ์•ˆ์— ๊ผญ ๋ถ™์–ด ์žˆ๋Š” ๊ณ ์† ์„œ๋ž

L1 ์บ์‹œ๋Š” CPU ์ฝ”์–ด ๋‚ด๋ถ€์— ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด์š”.
CPU๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ ์ œ์ผ ๋จผ์ € ์ ‘๊ทผํ•˜๋Š” ์บ์‹œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์†๋„๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์œ„์น˜: ๊ฐ CPU ์ฝ”์–ด ์•ˆ
  • ์†๋„: ๊ฐ€์žฅ ๋น ๋ฆ„ (CPU ํด๋Ÿญ์— ๊ฑฐ์˜ ๋งž๋จน๋Š” ์†๋„)
  • ์šฉ๋Ÿ‰: 8KB~64KB ์ •๋„
  • ํŠน์ง•: ๋ช…๋ น์–ด ์บ์‹œ(I-Cache)์™€ ๋ฐ์ดํ„ฐ ์บ์‹œ(D-Cache)๋กœ ๋ถ„๋ฆฌ๋จ

L1 ์บ์‹œ๋Š” ์ž‘์ง€๋งŒ ๊ฐ€์žฅ ๋น ๋ฅธ ์ €์žฅ ๊ณต๊ฐ„์ด๋ผ, ์ตœ๊ทผ์— ์‚ฌ์šฉ๋œ ๋ช…๋ น์–ด์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ , CPU์˜ ํŒŒ์ดํ”„๋ผ์ธ ํšจ์œจ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค.

โœ… L2 ์บ์‹œ: ์ฝ”์–ด ์˜†์— ์‚ด์ง ๋ถ™์€ ์ค‘๊ฐ„์ฐฝ๊ณ 

L2 ์บ์‹œ๋Š” L1๋ณด๋‹ค ์•ฝ๊ฐ„ ๋А๋ฆฌ์ง€๋งŒ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์–ด์š”. ์˜ˆ์ „์—๋Š” CPU ์™ธ๋ถ€(๋ณด๋“œ ์œ„ ์นฉ)์— ์žˆ์—ˆ์ง€๋งŒ, ์š”์ฆ˜์€ ๋Œ€๋ถ€๋ถ„ CPU ๋‚ด๋ถ€์— ๋‚ด์žฅ๋ฉ๋‹ˆ๋‹ค.

  • ์œ„์น˜: ๋Œ€๋ถ€๋ถ„์€ CPU ์ฝ”์–ด ์•ˆ์— ์žˆ์ง€๋งŒ, ๊ณต์œ  ๋ฐฉ์‹(L2๋ฅผ ์—ฌ๋Ÿฌ ์ฝ”์–ด๊ฐ€ ํ•จ๊ป˜ ์“ฐ๋Š” ๊ตฌ์กฐ)๋„ ์กด์žฌ
  • ์†๋„: L1๋ณด๋‹จ ๋А๋ฆฌ์ง€๋งŒ RAM๋ณด๋‹จ ๋น ๋ฆ„
  • ์šฉ๋Ÿ‰: 64KB~4MB ์ •๋„
  • ํŠน์ง•: L1์—์„œ ๋ชป ์ฐพ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๊ธฐ์„œ ์ฐพ์Œ

L2 ์บ์‹œ๋Š” L1์˜ ๋ฐฑ์—… ์—ญํ• ์„ ํ•˜๋ฉฐ, ์š”์ฆ˜ CPU์—์„  ๋Œ€๋ถ€๋ถ„ ์ฝ”์–ด๋งˆ๋‹ค L2๋ฅผ ๋”ฐ๋กœ ๋ถ™์ด๊ฑฐ๋‚˜, ๋‘์„ธ ๊ฐœ ์ฝ”์–ด๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๊ตฌ์กฐ๋„ ๋งŽ์•„์š”.

โœ… L3 ์บ์‹œ: ๋ชจ๋‘๊ฐ€ ํ•จ๊ป˜ ์“ฐ๋Š” ๊ณต์šฉ ์ฐฝ๊ณ 

L3 ์บ์‹œ๋Š” ์˜ˆ์ „์—” ๋ฉ”์ธ๋ณด๋“œ๋‚˜ ์นฉ์…‹์— ์™ธ์žฅ ํ˜•ํƒœ๋กœ ๋ถ™๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ์ง€๋งŒ, ์ตœ๊ทผ ์ธํ…”์˜ i5, i7 ์‹œ๋ฆฌ์ฆˆ์ฒ˜๋Ÿผ ๊ณ ์„ฑ๋Šฅ CPU๋Š” L3๋„ CPU ์•ˆ์— ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด์š”. ๋‹ค๋งŒ, L3๋Š” ๊ฐ ์ฝ”์–ด๊ฐ€ ๊ณต์œ ํ•ด์„œ ์“ฐ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

  • ์œ„์น˜: CPU ์นฉ ๋‚ด๋ถ€, ํ•˜์ง€๋งŒ ์ฝ”์–ด๋“ค๊ณผ ๊ณต์œ ํ•˜๋Š” ๊ตฌ์กฐ
  • ์†๋„: L2๋ณด๋‹ค ๋А๋ฆผ
  • ์šฉ๋Ÿ‰: ์ˆ˜ MB~์ˆ˜์‹ญ MB (์˜ˆ: i7์—๋Š” 8MB ์ด์ƒ)
  • ํŠน์ง•: ์—ฌ๋Ÿฌ ์ฝ”์–ด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

์—ฌ๋Ÿฌ ์ฝ”์–ด๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•  ๋•Œ, L3 ์บ์‹œ๊ฐ€ ๊ทธ ์ค‘์žฌ์ž ์—ญํ• ์„ ํ•ด์ค๋‹ˆ๋‹ค. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๊ธฐ์—ฌํ•ด์š”.

์ตœ๊ทผ i5, i7์˜ L3 ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋‹ค?

โœ… L3 ์บ์‹œ๊ฐ€ CPU ์•ˆ์— ์žˆ์œผ๋ฉด ๋ญ๊ฐ€ ์ข‹์„๊นŒ?

์˜ˆ์ „์—๋Š” L3 ์บ์‹œ๊ฐ€ CPU ์™ธ๋ถ€, ์ฆ‰ ๋ฉ”์ธ๋ณด๋“œ๋‚˜ ๋‹ค๋ฅธ ์นฉ์…‹์— ๋”ฐ๋กœ ๋ถ™์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ์–ด์š”. ํ•˜์ง€๋งŒ ์ตœ๊ทผ ์ธํ…” i5, i7 ๊ฐ™์€ ๊ณ ์„ฑ๋Šฅ CPU๋Š” L3 ์บ์‹œ๋„ CPU ๋‚ด๋ถ€์— ํ†ตํ•ฉํ•ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ญ๊ฐ€ ์ข‹๋ƒ๋ฉด์š”:

1) ๐Ÿƒโ€โ™‚๏ธ ์ ‘๊ทผ ์†๋„๊ฐ€ ๋” ๋นจ๋ผ์ ธ์š”

  • ์™ธ๋ถ€ ์นฉ์— ์žˆ๋Š” ์บ์‹œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด CPU ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ”๋‹ค๊ฐ€ ๋“ค์–ด์™€์•ผ ํ•˜๋‹ˆ๊นŒ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์–ด์š”.
  • ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์— L3๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐ์ดํ„ฐ ์™•๋ณต ์‹œ๊ฐ„(latency)์ด ํ›จ์”ฌ ์ค„์–ด๋“ค์–ด์š”.

๊ฒฐ๊ณผ: ๋ฉ€ํ‹ฐ์ฝ”์–ด ์ž‘์—…์—์„œ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ด๋ค„์ ธ์„œ ์ „๋ฐ˜์ ์ธ ์‘๋‹ต์„ฑ๊ณผ ์†๋„๊ฐ€ ์ข‹์•„์ง‘๋‹ˆ๋‹ค!

2) ๐Ÿง  ์ฝ”์–ด ๊ฐ„ ํ˜‘์—…์ด ํ›จ์”ฌ ์ˆ˜์›”ํ•ด์ ธ์š”

  • L3๋Š” ์—ฌ๋Ÿฌ ์ฝ”์–ด๊ฐ€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์บ์‹œ์ž–์•„์š”?
  • L3๊ฐ€ CPU ์•ˆ์— ์žˆ์œผ๋ฉด, ์ฝ”์–ด ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์‹œ๊ฐ„๋„ ๋นจ๋ผ์ง€๊ณ , ์บ์‹œ ์ผ๊ด€์„ฑ ์œ ์ง€๋„ ๋” ์‰ฌ์›Œ์ ธ์š”.

๊ฒฐ๊ณผ: ๋ฉ€ํ‹ฐ์ฝ”์–ด ๋ณ‘๋ ฌ ์ž‘์—…์ด๋‚˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

3) ๐Ÿ”‹ ์ „๋ ฅ ์†Œ๋ชจ๋„ ์ค„์–ด๋“ค์–ด์š”

  • CPU ์™ธ๋ถ€๋กœ ์™”๋‹ค ๊ฐ”๋‹ค ํ•˜๋ ค๋ฉด ์ „๊ธฐ ์‹ ํ˜ธ๋ฅผ ๋ฉ€๋ฆฌ ๋ณด๋‚ด์•ผ ํ•ด์„œ ์ „๋ ฅ ์†Œ๋น„๊ฐ€ ๋” ํฝ๋‹ˆ๋‹ค.
  • ๋ฐ˜๋Œ€๋กœ, ๋‚ด๋ถ€ ํ†ตํ•ฉ๋œ ๊ตฌ์กฐ๋Š” ์งง์€ ๊ฒฝ๋กœ๋กœ ๋น ๋ฅด๊ฒŒ ํ†ต์‹ ํ•˜๋ฏ€๋กœ ์ „๋ ฅ ํšจ์œจ์ด ๋†’์•„์ ธ์š”.

4) ๐Ÿ’ป ๋” ์ž‘๊ณ  ํšจ์œจ์ ์ธ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•ด์š”

  • L3 ์บ์‹œ๋ฅผ CPU ์•ˆ์— ๋„ฃ์œผ๋ฉด, ์„ค๊ณ„๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  ํšŒ๋กœ ๋ณต์žก์„ฑ๋„ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฐœ์—ด ๊ด€๋ฆฌ๋„ ์‰ฌ์›Œ์ง€๊ณ , ์นฉ ๋ฉด์  ๋Œ€๋น„ ์„ฑ๋Šฅ ๋ฐ€๋„๋„ ๋†’์•„์ ธ์š”.

"L3 ์บ์‹œ๊ฐ€ CPU ์•ˆ์— ์žˆ์œผ๋ฉด ๋” ๋น ๋ฅด๊ณ , ์ „๋ ฅ๋„ ์ ๊ฒŒ ๋“ค๊ณ , ๋ฉ€ํ‹ฐ์ฝ”์–ด ์„ฑ๋Šฅ๊นŒ์ง€ ์ข‹์•„์ง‘๋‹ˆ๋‹ค!"

๐Ÿ“Œ ์บ์‹œ ์œ„์น˜๊ฐ€ ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€?

์บ์‹œ ์ข…๋ฅ˜์œ„์น˜์ ‘๊ทผ ์†๋„๊ณต์œ  ์—ฌ๋ถ€ํŠน์ง•
L1๊ฐ ์ฝ”์–ด ๋‚ด๋ถ€๋งค์šฐ ๋น ๋ฆ„X (๊ฐœ๋ณ„)๋ช…๋ น์–ด/๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ, ์ดˆ๊ณ ์† ์ ‘๊ทผ
L2์ฝ”์–ด ๋‚ด๋ถ€ ๋˜๋Š” ์ฝ”์–ด๋‹น 1๊ฐœ๋น ๋ฆ„๋ณดํ†ต XL1์˜ ๋ฐฑ์—…, ์ค‘๊ฐ„ ์ˆ˜์ค€ ์บ์‹œ
L3CPU ๋‚ด๋ถ€, ๋ชจ๋“  ์ฝ”์–ด ๊ณต์œ ๋А๋ฆผO๋‹ค์ค‘ ์ฝ”์–ด ํ˜‘์—…์— ์ตœ์ ํ™”
  • L1๊ณผ L2๋Š” ์ง์ ‘์ ์ธ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ํด๋Ÿญ๋‹น ๋ช…๋ น์–ด ์‹คํ–‰ ํšจ์œจ์ด ์—ฌ๊ธฐ์„œ ๊ฐˆ๋ ค์š”.
  • L3๋Š” ๋ฉ€ํ‹ฐ์ฝ”์–ด ์„ฑ๋Šฅ์„ ๋†’์ด์ง€๋งŒ, L1/L2ใปใฉ ์˜ํ–ฅ์€ ํฌ์ง€ ์•Š์•„์„œ ๋ฒค์น˜๋งˆํฌ์—” ์žกํ˜€๋„ ์ฒด๊ฐ์€ ์•ฝํ•œ ํŽธ์ด์—์š”.
  • ์ตœ์‹  CPU๋Š” ๋ชจ๋“  ์บ์‹œ๊ฐ€ CPU ์•ˆ์— ๋‚ด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ ์™•๋ณต ์‹œ๊ฐ„(latency)์ด ๋”์šฑ ์ค„๊ณ  ์ „์ฒด ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ: โ€œCPU โ†’ L1 โ†’ (์—†์œผ๋ฉด) L2 โ†’ (์—†์œผ๋ฉด) L3 โ†’ (์—†์œผ๋ฉด) ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ โ†’ ๋””์Šคํฌโ€

์–ด ๊ทธ๋Ÿฐ๋ฐ? L1, L2, L3๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ๋‹ค๊ณ ์š”?

L1, L2, L3๋Š” ๋„คํŠธ์›Œํฌ ๊ณ„์ธต, ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ, ์ด๋ฅœ์ฐจ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋กœ, ๊ฐ๊ฐ ๋‹ค๋ฅธ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

L1, L2, L3 ์Šค์œ„์น˜

๋„คํŠธ์›Œํฌ์˜ ๊ณ„์ธต์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋˜๋Š” ์Šค์œ„์น˜๋กœ, L1์€ ํ—ˆ๋ธŒ, L2๋Š” ์Šค์œ„์นญ ํ—ˆ๋ธŒ, L3๋Š” ๋ผ์šฐํ„ฐ๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์˜จ์˜ ๊ธฐ์ˆ ์ด์•ผ๊ธฐ(L1 ์Šค์œ„์น˜)์— ๋”ฐ๋ฅด๋ฉด:
L1 ์Šค์œ„์น˜๋Š” ๋ฌผ๋ฆฌ ๊ณ„์ธต(Layer1)์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
L2 ์Šค์œ„์น˜๋Š” ๋ฐ์ดํ„ฐ๋งํฌ ๊ณ„์ธต(Layer2)๋ฅผ ํ†ตํ•ด MAC ์ฃผ์†Œ๋ฅผ ๋ณด๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
L3 ์Šค์œ„์น˜๋Š” ๋„คํŠธ์›Œํฌ ๊ณ„์ธต(Layer3)๋ฅผ ํ†ตํ•ด IP ์ฃผ์†Œ๋ฅผ ๋ณด๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

L1, L2, L3 ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ

  • CPU์™€ ๊ฐ€๊นŒ์šด ์ˆœ์„œ๋Œ€๋กœ ๊ณ„์ธต์„ ๊ตฌ์„ฑํ•˜๋Š” ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋กœ, L1์€ ์ฝ”์–ด์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ, L2๋Š” ๊ทธ ๋‹ค์Œ ๊ฐ€๊นŒ์šด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ, L3๋Š” ๊ทธ ๋‹ค์Œ ๊ฐ€๊นŒ์šด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ์บ์‹œ๊ฐ€ ํฌ๋ฉด ๋ฌด์กฐ๊ฑด ์ข‹์€ ๊ฑธ๊นŒ์š”?

์บ์‹œ ์šฉ๋Ÿ‰์ด ํฌ๋ฉด ์„ฑ๋Šฅ์— ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฑด ๋งž์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์€ ์•„๋‹ ์ˆ˜๋„ ์žˆ์–ด์š”.
์‹ค์ œ๋กœ๋Š” ๋ฒค์น˜๋งˆํฌ ํˆด์—์„œ ์ˆ˜์น˜๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ •๋„์ด๋ฉฐ, ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ํ™˜๊ฒฝ์—์„œ๋Š” ํฐ ์ฐจ์ด๋ฅผ ๋А๋ผ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ, CPU๋ฅผ ์„ ํƒํ•  ๋•Œ ์บ์‹œ๋Š” ๋ณด์กฐ์ ์ธ ํŒ๋‹จ ๊ธฐ์ค€์ด ๋  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ์ ˆ๋Œ€์ ์ธ ๊ธฐ์ค€์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๊ธฐ์–ตํ•ด๋‘๋ฉด ์ข‹์•„์š”.

์บ์‹œ 4ํ™”. ์บ์‹œ๋Š” ์–ด๋–ป๊ฒŒ ์šฐ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋‚ผ๊นŒ?

์บ์‹œ๋Š” ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค. ๊ฝค ์ฒด๊ณ„์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ด์š”. ๊ทธ๊ฒŒ ๋ฐ”๋กœ ๋งคํ•‘(Mapping) ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : https://ssoonidev.tistory.com/35

cpu๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ ค๊ณ  ํ•˜์ง€๋งŒ, cpu๊ฐ€ ์“ฐ๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ž…์žฅ์—์„œ๋Š” ์™ธ๊ณ„์–ด ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ค‘๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜(MMU)๊ฐ€ ๊ฐ€์šด๋ฐ์—์„œ ๋ฒˆ์—ญํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์•Œ์•„ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ด์ค˜์š”!

1) ์ง์ ‘ ๋งคํ•‘ (Direct Mapping)

  • RAM ์ฃผ์†Œ์˜ ์ผ๋ถ€ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์บ์‹œ ๋ธ”๋ก ์œ„์น˜๋ฅผ ์ •ํ•จ
  • ๋‹จ์ˆœํ•˜์ง€๋งŒ ์ถฉ๋Œ์ด ์ž์ฃผ ๋‚จ

2) ์™„์ „ ์—ฐ๊ด€ ๋งคํ•‘ (Fully Associative Mapping)

  • ์–ด๋–ค ์บ์‹œ ๋ธ”๋ก์—๋“  ์ €์žฅ ๊ฐ€๋Šฅ
  • ์œ ์—ฐํ•˜์ง€๋งŒ ๋А๋ฆฌ๊ณ  ๋ณต์žกํ•จ
  • ์ ์ค‘๋ฅ ์ด ๋†’๋‹ค๋Š” ์žฅ์ 

3) ์ง‘ํ•ฉ ์—ฐ๊ด€ ๋งคํ•‘ (Set-Associative Mapping)

  • ์บ์‹œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ '์ง‘ํ•ฉ'์œผ๋กœ ๋‚˜๋ˆ”
  • ๊ฐ ์ง‘ํ•ฉ์— ์—ฌ๋Ÿฌ ๋ธ”๋ก์ด ์žˆ์–ด์„œ ์œ ์—ฐ์„ฑ๊ณผ ํšจ์œจ์˜ ๊ท ํ˜•์„ ๋งž์ถค

ํƒœ๊ทธ(Tag)์™€ ์ธ๋ฑ์Šค(Index)

  • ์บ์‹œ๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ์ฃผ์†Œ์—์„œ ์™”๋Š”์ง€ ๊ธฐ์–ตํ•˜๋ ค๋ฉด 'ํƒœ๊ทธ'๋ฅผ ๋ถ™์—ฌ๋‘ก๋‹ˆ๋‹ค
  • CPU๊ฐ€ ์ฃผ์†Œ๋ฅผ ์š”์ฒญํ•˜๋ฉด, ๋จผ์ € ์ธ๋ฑ์Šค๋ฅผ ๋ณด๊ณ , ๊ทธ ์œ„์น˜์— ์žˆ๋Š” ํƒœ๊ทธ๋ฅผ ๋น„๊ตํ•ด ์ผ์น˜ํ•˜๋ฉด ํžˆํŠธ(Hit), ์•„๋‹ˆ๋ฉด ๋ฏธ์Šค(Miss)

์ด๊ฑธ ๋งˆ์น˜ ์šฐ์ฒด๊ตญ ์‚ฌ์„œํ•จ ์ฐพ๊ธฐ์ฒ˜๋Ÿผ ์ƒ๊ฐํ•˜๋ฉด ๋ผ์š”:

  • ์ธ๋ฑ์Šค๋Š” ์‚ฌ์„œํ•จ ๋ฒˆํ˜ธ
  • ํƒœ๊ทธ๋Š” ๋ฐ›๋Š” ์‚ฌ๋žŒ ์ด๋ฆ„
  • ๋ฐ์ดํ„ฐ๋Š” ํŽธ์ง€ ๋‚ด์šฉ

๊ฒฐ๊ตญ ์ด๊ฑธ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์–ด์š”:

"์บ์‹œ๋Š” ์ฃผ์†Œ๋ฅผ ํƒœ๊ทธ์™€ ์ธ๋ฑ์Šค๋กœ ๋ถ„ํ•ดํ•ด์„œ, '์ด ํŽธ์ง€๊ฐ€ ๋„ˆํ•œํ…Œ ๋งž๋Š”์ง€'๋ฅผ ํŒ๋‹จํ•˜๋Š” ์Šค๋งˆํŠธํ•œ ์šฐ์ฒดํ†ต์ด๋‹ค."

์ข‹์•„์š”! ๋‘ ๊ฐœ์˜ ๊ธ€์„ ํ•ฉ์น˜๋ฉด ์บ์‹œ์˜ ๊ตฌ์กฐ์™€ ์ฃผ์†Œ ๋งคํ•‘ ์›๋ฆฌ๊นŒ์ง€ ํ๋ฆ„ ์žˆ๊ฒŒ, ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ •๋ฆฌํ•ด๋ณผ๊ฒŒ์š”.

์†Œ์ œ๋ชฉ์€ ์‹œ๋ฆฌ์ฆˆ ํ˜•์‹์— ๋งž์ถฐ์„œ:

๐Ÿง  ์บ์‹œ 5ํ™”: ์บ์‹œ์˜ ๊ตฌ์กฐ โ€“ ๋ธ”๋ก, ๋ผ์ธ, ์„ธํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์ด๋ฒˆ ํ™”์—์„œ๋Š” ์บ์‹œ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€๋ฅผ ํŒŒํ—ค์ณ ๋ด…๋‹ˆ๋‹ค.
์ปดํ“จํ„ฐ ์† ์บ์‹œ๋„ ๊ฒฐ๊ตญ์€ ์ •๋ˆ๋œ ์นธ์นธ์ด ์ˆ˜๋‚ฉ์žฅ ๊ฐ™์€ ๊ตฌ์กฐ๋‹ˆ๊นŒ์š”!

1. ์บ์‹œ๋Š” ์–ด๋–ค ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์„๊นŒ์š”?

์บ์‹œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ '์บ์‹œ ๋ผ์ธ(Line)' ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์š”.

๊ฐ ์บ์‹œ ๋ผ์ธ์—๋Š” ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ '๋ธ”๋ก(Block)'์ด ๋“ค์–ด๊ฐ€๊ณ , ์ด์™€ ํ•จ๊ป˜ ์œ ํšจ ๋น„ํŠธ(Valid bit)์™€ ํƒœ๊ทธ(Tag) ์ •๋ณด๋„ ํ•จ๊ป˜ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

  • ๋ธ”๋ก(Block): ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ (์˜ˆ: 64๋ฐ”์ดํŠธ)
  • ์บ์‹œ ๋ผ์ธ(Line): ๋ธ”๋ก ํ•˜๋‚˜๋ฅผ ์ €์žฅํ•˜๋Š” ์บ์‹œ์˜ ์นธ
  • ํƒœ๊ทธ(Tag): ๋™์ผํ•œ ์„ธํŠธ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๋ธ”๋ก๋“ค์„ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž
  • ์œ ํšจ ๋น„ํŠธ(Valid bit): ํ•ด๋‹น ๋ผ์ธ์ด ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€

2. ์„ธํŠธ(Set)๋ž€ ๋ฌด์—‡์ผ๊นŒ?

์บ์‹œ ๋ผ์ธ๋“ค์€ '์„ธํŠธ(Set)'๋ผ๋Š” ๋‹จ์œ„๋กœ ๋ฌถ์—ฌ ์žˆ์–ด์š”.

  • ํ•˜๋‚˜์˜ ์„ธํŠธ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ผ์ธ(์นธ)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์š”.
  • ์˜ˆ: 4-์›จ์ด ์„ธํŠธ ์–ด์†Œ์‹œ์—์ดํ‹ฐ๋ธŒ ์บ์‹œ โ†’ ์„ธํŠธ๋‹น 4๊ฐœ์˜ ๋ผ์ธ

์ด๋•Œ CPU๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ํŠน์ •ํ•œ ์„ธํŠธ ํ•˜๋‚˜์—๋งŒ ๋งคํ•‘๋˜๊ณ , ๊ทธ ์„ธํŠธ ์•ˆ์˜ ๋ผ์ธ ์ค‘ ํ•˜๋‚˜์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
์ฆ‰,
์„ธํŠธ โ†’ ๋ผ์ธ โ†’ ๋ธ”๋ก
์ด๋ผ๋Š” ๊ตฌ์กฐ๋กœ ๊ธฐ์–ตํ•˜๋ฉด ๋ผ์š”.

3. ์บ์‹œ ๊ตฌ์กฐ ์‹œ๊ฐํ™”

์บ์‹œ๊ฐ€ ์ „์ฒด์ ์œผ๋กœ S๊ฐœ์˜ ์„ธํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ ,
๊ฐ ์„ธํŠธ์—๋Š” E๊ฐœ์˜ ์บ์‹œ ๋ผ์ธ์ด ์žˆ์œผ๋ฉฐ,
๊ฐ ๋ผ์ธ์€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์ €์žฅํ•ด์š”.

๋”ฐ๋ผ์„œ ์ด ์บ์‹œ ํฌ๊ธฐ๋Š”:
๐Ÿ“ฆ S ร— E ร— B ๋ฐ”์ดํŠธ (B๋Š” ๋ธ”๋ก์˜ ํฌ๊ธฐ)๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์–ด์š”.

4. ์บ์‹œ์˜ ๊ตฌ์กฐ๋Š” ์–ด๋–ป๊ฒŒ ๋‚˜๋‰˜๋‚˜์š”? ๋งคํ•‘ ๋ฐฉ์‹

์„ธํŠธ๋‹น ๋ผ์ธ์˜ ์ˆ˜(E)์— ๋”ฐ๋ผ ์บ์‹œ์˜ ํ˜•ํƒœ๋„ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์บ์‹œ ๊ตฌ์กฐ์„ค๋ช…
Direct-mapped Cache์„ธํŠธ๋‹น ๋ผ์ธ์ด 1๊ฐœ (E = 1)
โ†’ ๋ธ”๋ก์€ ํŠน์ •ํ•œ ํ•œ ์ž๋ฆฌ์—๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์š”
Set-associative Cache์„ธํŠธ๋‹น ๋ผ์ธ์ด ์—ฌ๋Ÿฌ ๊ฐœ (E > 1)
โ†’ ๋ธ”๋ก์€ ํ•ด๋‹น ์„ธํŠธ ์•ˆ์˜ ์—ฌ๋Ÿฌ ์ž๋ฆฌ ์ค‘ ํ•œ ๊ณณ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์š”
Fully-associative Cache๋ชจ๋“  ๋ธ”๋ก์ด ๋ชจ๋“  ๋ผ์ธ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์š”
โ†’ E = ์ „์ฒด ๋ผ์ธ ์ˆ˜

์ด์ œ ์บ์‹œ ๊ตฌ์กฐ๋ฅผ ์•Œ์•˜์–ด์š”. ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์ด ์–ด๋–ป๊ฒŒ ์บ์‹œ์— ๋“ค์–ด๊ฐ€๋Š”์ง€ ์•Œ์•„๋ณด๋ฉด, ๋ฐ”๋กœ "๋งคํ•‘ ๋ฐฉ์‹" ์ด์—์š”.

1) ์ง์ ‘ ๋งคํ•‘ (Direct Mapped Cache)

  • ์•„์ฃผ ๋‹จ์ˆœํ•œ ๋ฐฉ์‹.
  • ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์€ ์บ์‹œ์˜ '๋”ฑ ํ•˜๋‚˜์˜ ๋ผ์ธ'์—๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋ธ”๋ก ๋ฒˆํ˜ธ 10์€ ์บ์‹œ์˜ (10 mod ์บ์‹œ ํฌ๊ธฐ)๋ฒˆ ๋ผ์ธ์—๋งŒ ๋“ค์–ด๊ฐ.

์žฅ์ : ๋น ๋ฅด๊ณ  ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•จ.
๋‹จ์ : ์ถฉ๋Œ(Conflict)์ด ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

2) ์™„์ „ ์—ฐ๊ด€ ๋งคํ•‘ (Fully Associative Mapping)

  • ์•„๋ฌด ๋ธ”๋ก์ด๋“  ์บ์‹œ์˜ '์–ด๋–ค ๋ผ์ธ์—๋“ ' ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ.
  • ์–ด๋”” ๋“ค์–ด๊ฐ€๋“  ์ƒ๊ด€์—†๊ธฐ ๋•Œ๋ฌธ์— ์œ ์—ฐํ•จ.

์žฅ์ : ์ถฉ๋Œ ์—†์Œ.
๋‹จ์ : ์–ด๋–ค ๋ธ”๋ก์ด ์–ด๋”” ์žˆ๋Š”์ง€ ์ฐพ์œผ๋ ค๋ฉด ๋ชจ๋“  ๋ผ์ธ์„ ๋‹ค ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋‹ˆ ๋А๋ฆผ (๋น„์Œˆ).

3) ์„ธํŠธ ์—ฐ๊ด€ ๋งคํ•‘ (Set-Associative Mapping)

  • ์ง์ ‘ ๋งคํ•‘๊ณผ ์™„์ „ ์—ฐ๊ด€์˜ ์ค‘๊ฐ„ ํƒ€์ž….
  • ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์€ ํŠน์ • ์„ธํŠธ์— ๋งคํ•‘๋˜๊ณ , ๊ทธ ์„ธํŠธ ๋‚ด ์–ด๋–ค ๋ผ์ธ์—๋“  ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ.
  • ์˜ˆ: 4-way ์„ธํŠธ ์—ฐ๊ด€์ด๋ฉด ์„ธํŠธ ํ•˜๋‚˜์— ๋ผ์ธ 4๊ฐœ.

์žฅ์ : ์ ๋‹นํ•œ ์œ ์—ฐ์„ฑ๊ณผ ์†๋„.
๋‹จ์ : ๊ตฌํ˜„ ๋ณต์žก๋„๋Š” ์ข€ ์žˆ์Œ.

4. ๋น„๊ต ํ‘œ

๋ฐฉ์‹์œ„์น˜ ๊ฒฐ์ •์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์†๋„์œ ์—ฐ์„ฑ
์ง์ ‘ ๋งคํ•‘๊ณ ์ •๋œ ๋ผ์ธ๋†’์Œ๋น ๋ฆ„๋‚ฎ์Œ
์™„์ „ ์—ฐ๊ด€์•„๋ฌด ๋ผ์ธ์—†์Œ๋А๋ฆผ๋†’์Œ
์„ธํŠธ ์—ฐ๊ด€์„ธํŠธ ๋‚ด ์„ ํƒ์ค‘๊ฐ„์ค‘๊ฐ„์ค‘๊ฐ„

5.์บ์‹œ ์ •์ฑ… ( ์•Œ๊ณ ๋ฆฌ์ฆ˜ )

1) ์บ์‹œ ์ •์ฑ…์ด ์ค‘์š”ํ•œ ์ด์œ 

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ ์ ˆํ•œ ์บ์‹œ ์ •์ฑ…์„ ์ทจํ•ด์•ผ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ด๋ฉด์„œ ๋Œ€์—ญํญ์„ ๋Œ์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ณ ์† ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค.
  • ์„ฑ๋Šฅ์„ ์ขŒ์šฐํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ง€ํ‘œ:
    • ๋ ˆ์ดํ„ด์‹œ (Latency): ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋ฐ›๊ธฐ๊นŒ์ง€์˜ ์ง€์—ฐ ์‹œ๊ฐ„, ์ž…์ถœ๋ ฅ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
    • ๋Œ€์—ญํญ (Bandwidth): ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์–‘
  • ์ ์ ˆํ•œ ์บ์‹œ ์ •์ฑ…์„ ์„ธ์šฐ๋ฉด ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2) ์™œ ์บ์‹œ๋ฅผ 'Set'์œผ๋กœ ๋‚˜๋ˆ„๋Š”๊ฐ€?

  • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด, ์บ์‹œ ๋‚ด์—์„œ ์„ ํ˜• ํƒ์ƒ‰ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Œ โ†’ O(N ร— E)
  • ๊ทธ๋ž˜์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์ •ํ•ด์ง„ ์œ„์น˜(Set)์—๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๊ฑธ Direct-mapped Cache ๋ผ๊ณ  ํ•ด์š”.

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ ๋ธ”๋ก์€ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ์ง‘ํ•ฉ์—๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ 2๋ฒˆ์งธ ๋ธ”๋ก (00001) โ†’ ์บ์‹œ์˜ 2๋ฒˆ์งธ ์ง‘ํ•ฉ(Set 2 : 001)์—๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์š”

์™œ ๊ทธ๋Ÿฐ๊ฑธ๊นŒ์š”?

CPU ๊ฐ€ ์ฐธ์กฐํ•  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์บ์‹œ์— ์ „๋‹ฌํ•  ๋•Œ, ์บ์‹œ๋Š” ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋Ÿญ์ด ์บ์‹œ์— ์žˆ๋Š”์ง€ ํƒ์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋Ÿญ์ด ๋งˆ๊ตฌ์žก์ด๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ์„ ํ˜•์œผ๋กœ ํƒ์ƒ‰ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. = O(N x E)
๊ทธ๋Ÿฐ๋ฐ ์œ„์™€ ๊ฐ™์ด ํ•ด์‹œ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋˜์–ด์žˆ์œผ๋ฉด O(E) ๋กœ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ E๋Š” ํ•œ์ •๋œ ์ˆซ์ž์ด๋ฏ€๋กœ O(1)์— ์ˆ˜๋ ดํ•ฉ๋‹ˆ๋‹ค.
๋•๋ถ„์— ํƒ์ƒ‰์€ Set ๋‚ด์—์„œ๋งŒ ํ•˜๋ฉด ๋จ โ†’ O(E), ๊ฑฐ์˜ O(1) ์ˆ˜์ค€!

3) ์ฃผ์†Œ ๊ตฌ์„ฑ: ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ์–ด์š”

์ฃผ์†Œ m = t (ํƒœ๊ทธ) + s (์„ธํŠธ ์ธ๋ฑ์Šค) + b (๋ธ”๋ก ์˜คํ”„์…‹)

์ด๋ฆ„์—ญํ• 
t (Tag)๊ฐ™์€ Set ์•ˆ์—์„œ ์–ด๋–ค ๋ธ”๋ก์ธ์ง€ ๊ตฌ๋ณ„
s (Set index)์–ด๋А Set์— ๋“ค์–ด๊ฐˆ์ง€๋ฅผ ๊ฒฐ์ •
b (Block offset)๋ธ”๋ก ์•ˆ์—์„œ ๋ช‡ ๋ฐ”์ดํŠธ ๋–จ์–ด์กŒ๋Š”์ง€ (๋ธ”๋ก ๋‚ด ์œ„์น˜)

4) ์ˆ˜์‹์œผ๋กœ ๋ณด๋Š” ๊ตฌ์กฐ ์ •๋ฆฌ

  • ๋ฉ”๋ชจ๋ฆฌ ์ด ํฌ๊ธฐ: M = 2^m ๋ฐ”์ดํŠธ (m๋น„ํŠธ ์ฃผ์†Œ ์‚ฌ์šฉ)
  • ๋ธ”๋ก ํฌ๊ธฐ: B = 2^b ๋ฐ”์ดํŠธ
  • Set ์ˆ˜: S = 2^s ๊ฐœ
  • ์ด ๋ธ”๋ก ์ˆ˜: 2^m / 2^b = 2^(m-b)

โ†’ ๋”ฐ๋ผ์„œ, ์ฃผ์†Œ m๋น„ํŠธ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์–ด์š”:

๊ตฌ๋ถ„๋น„ํŠธ ์ˆ˜
Tag (t)m - b - s
Set Index (s)s
Block Offset (b)b

๐Ÿ’ก ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์–ด๋–ป๊ฒŒ ์บ์‹œ๋ฅผ ์ฐพ์„๊นŒ?

์บ์‹œ๊ฐ€ ํ•˜๋Š” ์ผ ๋ณต์Šต!

์บ์‹œ๋Š” โ€œ๋‚ด๊ฐ€ ๋ฐฉ๊ธˆ ์ผ๋˜ ๋ฐ์ดํ„ฐโ€๋ฅผ ์•„์ฃผ ๋น ๋ฅด๊ฒŒ ๋‹ค์‹œ ๊บผ๋‚ด ์“ฐ๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์–ด์š”.
๊ทธ๋Ÿฐ๋ฐ CPU ์ž…์žฅ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ๋ฌผ์–ด๋ด์•ผ ํ•ด์š”:

"๋‚ด๊ฐ€ ์ฐพ๊ณ  ์‹ถ์€ ์ด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์ง€๊ธˆ ์บ์‹œ์— ์žˆ๋‹ˆ?"

์ด ์งˆ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ๋‹ตํ•˜๋ ค๋ฉด, ๊ทธ ์ฃผ์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ '์ž๋ฆฌ(์œ„์น˜)'๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์–ด์•ผ ํ•ด์š”.
๊ทธ๋ž˜์•ผ O(1)์— ๊ฐ€๊นŒ์šด ์†๋„๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒ ์ฃ !

์ฃผ์†Œ๋ฅผ ์ž˜๊ฒŒ ์ชผ๊ฐœ์„œ ์„ธํŠธ(Set)๋ฅผ ์ฐพ๊ณ , ๊ตฌ๋ณ„(Tag)ํ•˜๊ณ , ์•ˆ์ชฝ ์œ„์น˜(Offset)๋ฅผ ์ฐพ๋Š”๋‹ค!

CPU๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๊ทธ ์ฃผ์†Œ๋ฅผ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ์ชผ๊ฐœ์„œ ์บ์‹œ์— ์ „๋‹ฌํ•ด์š”.

[ Tag | Set Index | Block Offset ]
   โ†‘         โ†‘           โ†‘
   |         |           โ””โ”€ ๋ธ”๋ก ์•ˆ์—์„œ ๋ช‡ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ์ธ์ง€
   |         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ์–ด๋А ์„ธํŠธ(Set)์— ๋“ค์–ด๊ฐˆ์ง€
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ์„ธํŠธ ์•ˆ์—์„œ ์–ด๋–ค ๋ธ”๋ก์ธ์ง€

์ฃผ์†Œ ๋ถ„ํ•  ๊ตฌ์กฐ

๋„์‹œ ๋น„์œ ๋กœ ์ดํ•ดํ•ด๋ณด์ž ๐Ÿ™๏ธ

์บ์‹œ๋ฅผ ์•„ํŒŒํŠธ ๋‹จ์ง€๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณผ๊ฒŒ์š”:

  • Set Index = ์•„ํŒŒํŠธ ๋™ (์–ด๋А ๊ฑด๋ฌผ์— ๋“ค์–ด๊ฐˆ์ง€)
  • Tag = ๊ฐ™์€ ๋™์˜ ๋‹ค๋ฅธ ์„ธ๋Œ€ ์ค‘ ์–ด๋–ค ์„ธ๋Œ€์ธ์ง€ (์ง‘ ๋ฒˆํ˜ธ)
  • Offset = ์ง‘ ์•ˆ์—์„œ ์†ŒํŒŒ๋ƒ, ์ฑ…์ƒ์ด๋ƒ ๊ฐ™์€ ์œ„์น˜ (๋ช‡ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋ƒ)

์ฃผ์†Œ = โ€œ์•„ํŒŒํŠธ 101๋™ 302ํ˜ธ, ์†ŒํŒŒ ์˜†์— ์žˆ๋Š” ์ฑ…โ€

CPU๋Š” ์ด ์ฃผ์†Œ๋ฅผ ๋ณด๊ณ  ๋ฐ”๋กœ 101๋™(์„ธํŠธ)์— ๋“ค์–ด๊ฐ€์„œ, ๊ฑฐ๊ธฐ์„œ 302ํ˜ธ(Tag)์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ , ๊ทธ ์•ˆ์—์„œ ์†ŒํŒŒ ์˜†(Offset)์˜ ๊ฐ’์„ ๊บผ๋‚ด๋Š” ๊ฑฐ์˜ˆ์š”.

์ˆซ์ž๋กœ ํ•ด๋ณผ๊นŒ?

์˜ˆ:

  • 32๋น„ํŠธ ์ฃผ์†Œ ๊ณต๊ฐ„ (2ยณยฒ ๋ฐ”์ดํŠธ ์ฃผ์†Œ ๊ฐ€๋Šฅ)
  • ๋ธ”๋ก ํฌ๊ธฐ: 64๋ฐ”์ดํŠธ โ†’ Block Offset = logโ‚‚(64) = 6๋น„ํŠธ
  • ์„ธํŠธ ์ˆ˜: 256๊ฐœ โ†’ Set Index = logโ‚‚(256) = 8๋น„ํŠธ

๊ทธ๋Ÿฌ๋ฉด:

  • ์ „์ฒด ์ฃผ์†Œ 32๋น„ํŠธ = Tag + Set Index + Offset
  • Offset(b) = 6๋น„ํŠธ
  • Set Index(s) = 8๋น„ํŠธ
  • Tag(t) = 32 - 6 - 8 = 18๋น„ํŠธ

์ฆ‰, CPU๊ฐ€ ๋ณด๋Š” ์ฃผ์†Œ๋Š” ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ ์ ธ ์žˆ์–ด์š”:

[  Tag (18๋น„ํŠธ)  |  Set (8๋น„ํŠธ)  |  Offset (6๋น„ํŠธ)  ]

์™œ ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ„๋ฉด ์ข‹์€๊ฐ€์š”?

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด CPU๋Š” ์•„์ฃผ ๋น ๋ฅด๊ฒŒ ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”:

  1. Set Index๋ฅผ ๋ณด๊ณ , ํ•ด๋‹น ์„ธํŠธ(์˜ˆ: 101๋™)๋กœ ๋ฐ”๋กœ ๊ฐ
  2. ์„ธํŠธ ์•ˆ์˜ ๋ผ์ธ๋“ค์„ ๋Œ๋ฉด์„œ Tag๋ฅผ ๋น„๊ต
  3. ์ผ์น˜ํ•˜๋ฉด ๊ทธ ๋ผ์ธ์˜ Block์„ ๊ฐ€์ ธ์˜ค๊ณ , Offset์œผ๋กœ ๊ทธ ์•ˆ์˜ ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ์ฐ์–ด์„œ ๊บผ๋ƒ„!

๋•๋ถ„์— O(1)์— ๊ฐ€๊นŒ์šด ์†๋„๋กœ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์š”.
๊ทธ๋ƒฅ ๋ฌด์ž‘์ • ๋‹ค ๋’ค์ง€๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด์ฃ !

6. ์š”์•ฝ ๐Ÿ“

์šฉ์–ด์„ค๋ช…
๋ธ”๋ก๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ
๋ผ์ธ๋ธ”๋ก ํ•˜๋‚˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์บ์‹œ์˜ ์นธ
์„ธํŠธ์—ฌ๋Ÿฌ ๋ผ์ธ์„ ๋ฌถ์€ ๊ทธ๋ฃน
ํƒœ๊ทธ(Tag)๋™์ผ ์„ธํŠธ ๋‚ด ๋ธ”๋ก์„ ์‹๋ณ„ํ•˜๋Š” ๊ณ ์œ  ์ •๋ณด
Valid Bitํ•ด๋‹น ๋ผ์ธ์ด ์œ ํšจํ•œ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ
Set Index์–ด๋А ์„ธํŠธ์— ๋“ค์–ด๊ฐˆ์ง€๋ฅผ ์ •ํ•จ
Block Offset๋ธ”๋ก ์•ˆ์—์„œ์˜ ์œ„์น˜ (๋ช‡ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ?)

์บ์‹œ 6ํ™” : ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋™์ž‘ ํ๋ฆ„๋ถ€ํ„ฐ ๊ต์ฒด ์ •์ฑ…, ์“ฐ๊ธฐ ์ •์ฑ…, ์„ฑ๋Šฅ ์š”์ธ๊นŒ์ง€

1) ์บ์‹œ ์ ‘๊ทผ ๊ณผ์ •: ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์บ์‹œ์— ๋„๋‹ฌํ•˜๋ฉด?

m๋น„ํŠธ ์ฃผ์†Œ = [Tag (t) + Set Index (s) + Block Offset (b)]

CPU๋Š” ์ฐธ์กฐํ•˜๊ณ  ์‹ถ์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์บ์‹œ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋•Œ ์บ์‹œ๋Š” ์ด๋ ‡๊ฒŒ ๋™์ž‘ํ•ด์š”:

โœ… Step 1. Set Index(s) ํ™•์ธ โ†’ ํ•ด๋‹น ์„ธํŠธ๋กœ ์ด๋™

  • ์บ์‹œ๋Š” ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ Set ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌ
  • s๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์–ด๋–ค Set์„ ์ฐธ์กฐํ• ์ง€ ๊ฒฐ์ •

โœ… Step 2. Tag(t) ๋น„๊ต โ†’ ๊ทธ Set ์•ˆ์—์„œ ์ผ์น˜ํ•˜๋Š” Tag ์ฐพ๊ธฐ

  • Set ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ธ”๋ก(Tag)์ด ์žˆ์Œ
  • t๋ฅผ ๋น„๊ตํ•ด ์ผ์น˜ํ•˜๋Š” ๋ธ”๋ก์ด ์žˆ๋Š”์ง€ ํ™•์ธ

โœ… Step 3. Valid Bit ํ™•์ธ

  • ๊ทธ ๋ธ”๋ก์ด ์‹ค์ œ๋กœ ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ์ธ์ง€ ๊ฒ€์‚ฌ

๐Ÿ’ฅ ๊ฒฐ๊ณผ

  • ์„ธ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๋งž์œผ๋ฉด: ์บ์‹œ ํžˆํŠธ(HIT)
  • ํ•˜๋‚˜๋ผ๋„ ๋ถˆ์ผ์น˜ํ•˜๋ฉด: ์บ์‹œ ๋ฏธ์Šค(MISS)

2) ์บ์‹œ ํžˆํŠธ vs ์บ์‹œ ๋ฏธ์Šค

์ƒํ™ฉ์„ค๋ช…
์บ์‹œ ํžˆํŠธ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์กด์žฌ โ†’ Block Offset(b)๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
์บ์‹œ ๋ฏธ์Šค๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ โ†’ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด๋‹น ๋ธ”๋ก ์ „์ฒด๋ฅผ ๊ฐ€์ ธ์™€ Set์— ์ €์žฅ ํ›„ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜

๐Ÿ“Œ ๋ธ”๋ก ๋‹จ์œ„๋กœ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์ ! ์žŠ์ง€ ๋งˆ์„ธ์š”.
1๋ธ”๋ก = 1์บ์‹œ๋ผ์ธ = ๋ฐ”์ดํŠธ ์—ฌ๋Ÿฌ ๊ฐœ ๋ฌถ์Œ

3) ์บ์‹œ ๊ต์ฒด ์ •์ฑ… (Replacement Policy)

Set์— ์ด๋ฏธ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฝ‰ ์ฐจ์žˆ๋‹ค๋ฉด, ์–ด๋–ค ๋ธ”๋ก์„ ์ œ๊ฑฐํ•˜๊ณ  ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„๊นŒ?

๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜:

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ค๋ช…
Random๋ฌด์ž‘์œ„ ๋ธ”๋ก ์ œ๊ฑฐ. ๊ตฌํ˜„์€ ์‰ฌ์›€
FIFO (์„ ์ž…์„ ์ถœ)๋จผ์ € ๋“ค์–ด์˜จ ๋ธ”๋ก๋ถ€ํ„ฐ ์ œ๊ฑฐ
LRU (Least Recently Used)๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๋ธ”๋ก ์ œ๊ฑฐ
LFU (Least Frequently Used)๊ฐ€์žฅ ์‚ฌ์šฉ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ๋ธ”๋ก ์ œ๊ฑฐ

4) ์บ์‹œ ์“ฐ๊ธฐ ์ •์ฑ… (Write Policy)

๐Ÿ’ก ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

โ‘  ์บ์‹œ ํžˆํŠธ์ผ ๋•Œ

์ •์ฑ…์„ค๋ช…์žฅ์ ๋‹จ์ 
Write-through์บ์‹œ์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋™์‹œ์— ์ˆ˜์ •์ผ๊ด€์„ฑ ๋ณด์žฅ๋ฒ„์Šค ๋ณ‘๋ชฉ ๊ฐ€๋Šฅ
Write-back์บ์‹œ๋งŒ ์ˆ˜์ •, ๋‚˜์ค‘์— ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜์˜๋น ๋ฆ„์ผ๊ด€์„ฑ ์œ ์ง€ ์–ด๋ ค์›€, VI bit ํ•„์š”

โ†’ Write-back์€ VI (Valid-Invalid) ๋น„ํŠธ๋กœ โ€œ์ˆ˜์ •๋œ ์ƒํƒœโ€๋ฅผ ํ‘œ์‹œํ•ด๋‘ฌ์•ผ ํ•จ

โ‘ก ์บ์‹œ ๋ฏธ์Šค์ผ ๋•Œ

์ •์ฑ…์„ค๋ช…ํŠน์ง•
Write-allocate (Fetch on Write)๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ธ”๋ก์„ ๊ฐ€์ ธ์™€ ์บ์‹œ์— ์ €์žฅ ํ›„ ์ˆ˜์ •์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ ์บ์‹œ์— ๋ณด๊ด€
No-write allocate (Write-around)๋ฉ”๋ชจ๋ฆฌ๋งŒ ์ˆ˜์ •ํ•˜๊ณ  ์บ์‹œ๋Š” ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Œ์“ฐ๊ธฐ๋งŒ ์ผ์–ด๋‚  ๋•Œ ์œ ๋ฆฌ

5) ์บ์‹œ ์„ฑ๋Šฅ ์š”์†Œ ์š”์•ฝ

์šฉ์–ด์ •์˜
Hit RatioHit / (Hit + Miss)
Miss Ratio1 - Hit Ratio
Hit Time์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ๊ฐ„
Miss Penalty๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ธ”๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
์ด ๋ ˆ์ดํ„ด์‹œMiss์ผ ๊ฒฝ์šฐ: Hit Time + Miss Penalty

6) ์บ์‹œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ

โœ… Cache Size

  • ์ปค์งˆ์ˆ˜๋ก Miss Rate ๊ฐ์†Œ
  • ์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ(Time Locality)์„ ๋” ์ž˜ ์žก์Œ

โœ… Block Size

  • ์ž‘์„์ˆ˜๋ก ์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ ํ™•๋ณด
  • ํด์ˆ˜๋ก ๊ณต๊ฐ„์  ์ง€์—ญ์„ฑ ํ™•๋ณด
  • ์ค‘๊ฐ„๊ฐ’์—์„œ ์ตœ์ ํ™”๋จ

โœ… N-Way Set Associativity (E)

N๊ฐ’์žฅ๋‹จ์ 
์ž‘์„์ˆ˜๋ก (1-Way = Direct Mapped)๋น ๋ฆ„ (Hit Time โ†“), ์ถฉ๋Œ โ†‘ (Conflict Miss โ†‘)
ํด์ˆ˜๋ก (Full Associative)์ถฉ๋Œ โ†“, ํƒ์ƒ‰ ๋А๋ฆผ (Hit Time โ†‘)

โ†’ ์ƒํ™ฉ์— ๋”ฐ๋ผ Hit Time vs Miss Rate์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ์กฐ์ ˆ

์บ์‹œ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ ˆ๋””์Šค

"์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ž‘ ๋ ˆ๋””์Šค๊ฐ€ ๋ฌด์Šจ ๊ด€๋ จ์ด ์žˆ์–ด์š”?"๋ผ๊ณ  ๋ฌป๋Š” ๋ถ„๋“ค์ด ๋งŽ์€๋ฐ,
์‚ฌ์‹ค ์ด ๋‘˜์€ ์บ์‹œ(cache)๋ผ๋Š” ๊ฐ™์€ ์ฒ ํ•™์„ ๋ฐ”ํƒ•์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์–ด์š”.
ํ•˜์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ๊ณผ ๋ชฉ์ ์ด ๋‹ฌ๋ผ์š”.

๐Ÿง  ๋จผ์ € ๊ฐœ๋…๋ถ€ํ„ฐ ๋น„๊ตํ•ด๋ณผ๊ฒŒ์š”

ํ•ญ๋ชฉ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ(Cache Memory)๋ ˆ๋””์Šค(Redis)
์–ด๋””์„œ ์‚ฌ์šฉ?์ปดํ“จํ„ฐ ๋‚ด๋ถ€ (CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด)์„œ๋ฒ„ ์™ธ๋ถ€ (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด)
์—ญํ• ๋А๋ฆฐ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์‹  ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณต๋А๋ฆฐ DB ๋Œ€์‹  ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณต
์ €์žฅ ์œ„์น˜ํ•˜๋“œ์›จ์–ด(CPU ์นฉ ์•ˆ์ชฝ์— ๋‚ด์žฅ)์†Œํ”„ํŠธ์›จ์–ด(๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ)
์ €์žฅ ๋ฐฉ์‹๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ธฐ๋ฐ˜ ์ž๋™ ์ €์žฅํ‚ค-๊ฐ’(Key-Value) ์Œ์œผ๋กœ ๋ช…์‹œ์  ์ €์žฅ
์‚ฌ์šฉ ์ฃผ์ฒดCPU์›น์„œ๋ฒ„, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„
๋ฐ์ดํ„ฐ ํœ˜๋ฐœ์„ฑ์ „์› ๋„๋ฉด ์‚ฌ๋ผ์ง๊ธฐ๋ณธ์ ์œผ๋กœ ํœ˜๋ฐœ์„ฑ์ด์ง€๋งŒ, ์˜์†ํ™” ์„ค์ • ๊ฐ€๋Šฅ
๊ตฌํ˜„ ๋ฐฉ์‹ํ•˜๋“œ์›จ์–ด ๋ ˆ๋ฒจ, ๋งค์šฐ ์ €์ˆ˜์ค€์†Œํ”„ํŠธ์›จ์–ด ๋ ˆ๋ฒจ, ๊ณ ์ˆ˜์ค€ API ์ œ๊ณต

๐ŸŽฏ ํ•ต์‹ฌ ๊ณตํ†ต์ : โ€œ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊นŒ์ด์— ๋‘์ž!โ€

  • ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU๊ฐ€ ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ RAM ๋Œ€์‹  ๊ฐ€๊นŒ์šด ๊ณณ(L1/L2)์— ๋‘ก๋‹ˆ๋‹ค.
  • ๋ ˆ๋””์Šค๋Š” ์›น ์„œ๋น„์Šค๊ฐ€ ์ž์ฃผ ์š”์ฒญํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ DB ๋Œ€์‹  ๋ฉ”๋ชจ๋ฆฌ์— ๋‘ก๋‹ˆ๋‹ค.

์ฆ‰, ๋‘˜ ๋‹ค โ€˜์‹œ๊ฐ„ ์ ˆ์•ฝโ€™์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๊ฐ€๊นŒ์ด ๋‘๋Š” ์ „๋žต์ด์—์š”!

๐Ÿ“ฆ ์˜ˆ์‹œ๋กœ ์ดํ•ดํ•ด๋ณผ๊ฒŒ์š”

์ƒํ™ฉ: ์ธ๊ธฐ ์‡ผํ•‘๋ชฐ์—์„œ ์ƒํ’ˆ ์ƒ์„ธ ํŽ˜์ด์ง€ ์š”์ฒญ

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŠน์ • ์ƒํ’ˆ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋ฉด,
    ๋ณดํ†ต ์„œ๋ฒ„๋Š” DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์™€ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜์ฃ .

๊ทผ๋ฐ ์ด๊ฒŒ ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ์ƒํ’ˆ์ด๋ผ๋ฉด?
๋งค๋ฒˆ DB ๋‹ค๋…€์˜ค๋Š” ๊ฑด ๋น„ํšจ์œจ์ ์ด๊ฒ ์ฃ ?

โœ… ๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•˜๋Š” ์บ์‹œ ์ „๋žต:

1. ๋ ˆ๋””์Šค ์บ์‹œ ์‚ฌ์šฉ

  • ์„œ๋ฒ„๋Š” ์ƒํ’ˆ ์ •๋ณด๋ฅผ ๋ฏธ๋ฆฌ ๋ ˆ๋””์Šค์— ๋„ฃ์–ด๋‘  (์˜ˆ: product:1234)
  • ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋ฉด, DB ๋ง๊ณ  ๋ ˆ๋””์Šค์—์„œ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์™€์„œ ์‘๋‹ต

2. ํ•˜๋“œ์›จ์–ด ์บ์‹œ๋ผ๋ฉด?

  • ์ด๊ฑด ๊ทธ๋ณด๋‹ค ๋” ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€์—์„œ ๋™์ž‘ํ•ด์š”.
  • CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผํ•  ๋•Œ, ์ด์ „์— ๋ณธ ์ฃผ์†Œ๋ฉด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋น ๋ฅด๊ฒŒ ๊บผ๋ƒ„

๐Ÿ’ก ๊ณตํ†ต ์ฒ ํ•™์€ ์ด๊ฑฐ์˜ˆ์š”:

"๋А๋ฆฐ ๊ณณ์—์„œ ์ž์ฃผ ๊บผ๋‚ด ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋Š”, ๋น ๋ฅธ ๊ณณ์— ๋”ฐ๋กœ ๋ณต์‚ฌํ•ด๋‘์ž!"

๐Ÿšง ์ฐจ์ด์ ์€?

์ฐจ์ด์ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ ˆ๋””์Šค
๊ณ„์ธต ์œ„์น˜CPU โ†” RAM์„œ๋ฒ„ โ†” DB
์ €์žฅ ๋Œ€์ƒ๋ช…๋ น์–ด, ๋ฐ์ดํ„ฐ ๋ธ”๋กJSON, ๋ฌธ์ž์—ด, ํ•ด์‹œ, ๋ฆฌ์ŠคํŠธ ๋“ฑ
์‚ฌ์šฉ ๋ชฉ์ CPU ์—ฐ์‚ฐ ์†๋„ ํ–ฅ์ƒ์›น์„œ๋น„์Šค ์‘๋‹ต ์†๋„ ํ–ฅ์ƒ
์ž‘๋™ ๋ฐฉ์‹์ž๋™ (ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€)์ˆ˜๋™ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์„ค์ • (์†Œํ”„ํŠธ์›จ์–ด ์ˆ˜์ค€)
ํฌ๊ธฐ์ˆ˜์‹ญ KB~์ˆ˜ MB์ˆ˜ GB~์ˆ˜์‹ญ GB (RAM ํ•œ๋„๊นŒ์ง€)
์ œ์–ด ๊ถŒํ•œ๊ฑฐ์˜ ์—†์Œ์™„์ „ ์‚ฌ์šฉ์ž ์ œ์–ด ๊ฐ€๋Šฅ (TTL, ์‚ญ์ œ, ์—…๋ฐ์ดํŠธ ๋“ฑ)

๐Ÿ”ฅ ์‰ฝ๊ฒŒ ๋น„์œ ํ•˜๋ฉด?

  • ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” โ€œ๋‚ด ์ฑ…์ƒ ์„œ๋žโ€
    โ†’ CPU๊ฐ€ ์ž์ฃผ ๋ณด๋Š” ์ž๋ฃŒ๋ฅผ ๋ฐ”๋กœ ๊บผ๋‚ด ์“ฐ๋ ค๊ณ  ๋„ฃ์–ด๋‘” ์นธ

  • ๋ ˆ๋””์Šค๋Š” โ€œํšŒ์‚ฌ ๋ณต์‚ฌ๋ณธ ํด๋”โ€
    โ†’ ์‚ฌ๋žŒ๋“ค์ด ์ž์ฃผ ์ฐพ๋Š” ๋ฌธ์„œ๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด๋‘๊ณ , ์›๋ณธ(DB)์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ฒŒ ํ•จ

โœ… ์š”์•ฝ ํ•œ ์ค„

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU๋ฅผ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์บ์‹œ,
๋ ˆ๋””์Šค๋Š” ์„œ๋ฒ„/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์บ์‹œ์ž…๋‹ˆ๋‹ค.

๋‘˜ ๋‹ค "๋น ๋ฅธ ์‘๋‹ต"์„ ์œ„ํ•ด ๋น„์Šทํ•œ ์ฒ ํ•™์„ ๊ณต์œ ํ•˜์ง€๋งŒ,
์“ฐ๋Š” ์œ„์น˜, ์ฃผ์ฒด, ๊ตฌํ˜„ ๋ฐฉ์‹์ด ๋‹ค๋ฅผ ๋ฟ์ด์—์š”!

๐Ÿš€ ARM, ์–ด๋–ป๊ฒŒ ์„ธ๊ณ„๋ฅผ ์ •๋ณตํ–ˆ์„๊นŒ? - M1

1) ARM์€ CPU๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์ง€ ์•Š๋Š” CPU ํšŒ์‚ฌ

ARM์€ CPU๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์ง€ ์•Š์•„์š”. ๋Œ€์‹ , ๊ฐ€๋ณ๊ณ  ํšจ์œจ์ ์ธ CPU ์„ค๊ณ„๋„๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋‹ค๋ฅธ ๋ฐ˜๋„์ฒด ํšŒ์‚ฌ๋“ค์—๊ฒŒ ๋ผ์ด์„ ์Šค(์„ค๊ณ„ ์‚ฌ์šฉ๊ถŒ) ํ˜•ํƒœ๋กœ ํŒ”์ฃ .

  • ํšŒ์‚ฌ ์ด๋ฆ„์€ ARM (Advanced RISC Machine)
  • RISC๋ž€? Reduced Instruction Set Computer
    โ†’ ์ ์€ ์ˆ˜์˜ ๋‹จ์ˆœํ•œ ๋ช…๋ น์–ด๋กœ ํšจ์œจ์„ ๋†’์ด๋Š” ๊ตฌ์กฐ!

์ด๋Ÿฐ ๋‹จ์ˆœํ•˜๊ณ  ๊ฐ€๋ฒผ์šด ์„ค๊ณ„๋Š” ์ „๋ ฅ ์†Œ๋ชจ๋ฅผ ์ค„์ด๋ฉด์„œ๋„ ๋น ๋ฅธ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค˜์š”. ๊ทธ๋ž˜์„œ ์Šค๋งˆํŠธํฐ, IoT ๊ธฐ๊ธฐ, ๋””์ง€ํ„ธ์นด๋ฉ”๋ผ ๋“ฑ ์ €์ „๋ ฅ์ด ์ค‘์š”ํ•œ ๊ธฐ๊ธฐ๋“ค์— ๋”ฑ์ด์—์š”!

2) ARM์˜ ํƒ„์ƒ์€ BBC ๊ต์œก ๋ฐฉ์†ก์—์„œ๋ถ€ํ„ฐ

1980๋…„๋Œ€, ์˜๊ตญ์€ '๊ตญ๋ฏผ์—๊ฒŒ ์ปดํ“จํ„ฐ๋ฅผ ์•Œ๋ฆฌ์ž!'๋ผ๋Š” BBC ์ปดํ“จํ„ฐ ๋ฆฌํ„ฐ๋Ÿฌ์‹œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด์š”.
BBC๋Š” ๊ต์œก ๋ฐฉ์†ก์— ์“ธ ์ปดํ“จํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด๋‹ฌ๋ผ๊ณ  ์—์ด์ฝ˜(Acorn) ์ปดํ“จํ„ฐ์‚ฌ์— ์š”์ฒญํ–ˆ์ฃ .

๊ทธ ๊ฒฐ๊ณผ ๋งŒ๋“ค์–ด์ง„ ๊ฒŒ ๋ฐ”๋กœ BBC ๋งˆ์ดํฌ๋กœ(BBC Micro).
๋‹น์‹œ๋กœ์„  ๊ณ ์„ฑ๋Šฅ์ด์—ˆ๊ณ , ์˜๊ตญ ๊ต์œก ์‹œ์žฅ์„ ํ‰์ •ํ–ˆ์–ด์š”!

ํ•˜์ง€๋งŒ ์—์ด์ฝ˜์€ ๋” ๊ฐ•๋ ฅํ•œ CPU๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ, ์ธํ…”์— ํ˜‘์กฐ๋ฅผ ์š”์ฒญํ–ˆ์ง€๋งŒ ๊ฑฐ์ ˆ๋‹นํ•˜๊ณ โ€ฆ

๊ฒฐ๊ตญ โ€œ๊ทธ๋Ÿผ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์ž!โ€ ํ•˜๊ณ  ์ž์ฒด CPU ๊ฐœ๋ฐœ์— ๋›ฐ์–ด๋“ญ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํƒ„์ƒํ•œ ๊ฒŒ ๋ฐ”๋กœ ARM = Acorn RISC Machine์ด์—์š”!

3) ARM์˜ ์ฒซ ์ž‘ํ’ˆ: ARM2 โ†’ ์ธํ…”์„ ์••๋„ํ•˜๋‹ค

  • ์ฒซ ARM CPU์ธ ARM2 (1987) ๋Š” ๋‹จ 2๋งŒ 7์ฒœ ๊ฐœ์˜ ํŠธ๋žœ์ง€์Šคํ„ฐ๋กœ ๊ตฌ์„ฑ๋์ง€๋งŒ,
    ์ธํ…”์˜ 80286๋ณด๋‹ค ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค˜์š”!

  • ์ด ๊ธฐ์ˆ ๋ ฅ ๋•๋ถ„์— ์• ํ”Œ๋„ ์ฃผ๋ชฉํ•˜๊ฒŒ ๋˜๊ณ ,
    ์—์ด์ฝ˜์€ ARM ๋ถ€์„œ๋ฅผ ๋ถ„์‚ฌ์‹œ์ผœ ์ง€๊ธˆ์˜ ARM Holdings๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

4) ์• ํ”Œ, ๋‹Œํ…๋„, ์Šค๋งˆํŠธํฐ๊นŒ์ง€ โ€“ ARM์˜ ํ™•์žฅ

  • ์• ํ”Œ ๋‰ดํŠผ์— ARM CPU๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ ,
  • ์ดํ›„ ์•„์ดํŒŸ, ๋‹Œํ…๋„ DS, ์ดˆ๋Œ€ ์•„์ดํฐ๊นŒ์ง€ ARM์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋ผ์š”!

์ „๋ ฅ ์†Œ๋ชจ๊ฐ€ ์ ๊ณ , ๋ฐœ์—ด๋„ ๋‚ฎ์œผ๋ฉด์„œ๋„ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—
๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋Š” ARM์„ ๋”ฐ๋ผ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์—†์—ˆ์ฃ .

5) ARM ์•„ํ‚คํ…์ฒ˜, ์ด์ œ๋Š” ๋…ธํŠธ๋ถ(Mac)๋„ ์ ‘์ˆ˜!

2020๋…„, ์• ํ”Œ์ด ๋ฐœํ‘œํ•œ M1 ์นฉ์€ ARM ๊ธฐ๋ฐ˜ CPU์—์š”.

  • ์ด์ „๊นŒ์ง€๋Š” ๋งฅ๋ถ์— ์ธํ…” CPU๋ฅผ ์ผ์ง€๋งŒ,
    M1๋ถ€ํ„ฐ๋Š” ์• ํ”Œ์ด ์ง์ ‘ ์„ค๊ณ„ํ•œ ARM ๊ธฐ๋ฐ˜ SoC๋ฅผ ์‚ฌ์šฉ!

  • ์ €์ „๋ ฅ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์„ฑ๋Šฅ์ด ์—„์ฒญ๋‚˜์„œ,
    ๋ฐ์Šคํฌํƒ‘ ๋ถ„์•ผ์—์„œ๋„ ARM์ด ๊ฒฝ์Ÿ๋ ฅ์„ ์ž…์ฆํ–ˆ์–ด์š”.

๐Ÿง  ์š”์•ฝ ์ •๋ฆฌ

๊ตฌ๋ถ„๋‚ด์šฉ
ARM์ด๋ž€?์ €์ „๋ ฅ RISC ๊ธฐ๋ฐ˜ CPU ์„ค๊ณ„ ํšŒ์‚ฌ (์ง์ ‘ ์ƒ์‚ฐ X)
์„ค๊ณ„ ์ฒ ํ•™๋‹จ์ˆœํ•œ ๋ช…๋ น์–ด ์„ธํŠธ โ†’ ๋น ๋ฅด๊ณ  ์ „๋ ฅ ํšจ์œจ ๋†’์Œ
์‹œ์ž‘์€?1980๋…„๋Œ€ ์˜๊ตญ, BBC ๊ต์œก์šฉ ์ปดํ“จํ„ฐ์—์„œ ํƒ„์ƒ
์œ ๋ช… ์ œํ’ˆ์• ํ”Œ M1, ์•„์ดํฐ, ๋‹Œํ…๋„ DS, ์Šค๋งˆํŠธํฐ ๋Œ€๋ถ€๋ถ„
์žฅ์ ์ „๋ ฅ ํšจ์œจ, ์ €๋ฐœ์—ด, ๋ชจ๋ฐ”์ผ/IoT์— ์ตœ์ ํ™”
ํ˜„์žฌ๋…ธํŠธ๋ถ(Mac), ์„œ๋ฒ„, ์Šˆํผ์ปดํ“จํ„ฐ๊นŒ์ง€ ํ™•์žฅ ์ค‘!

โ€œ๋‹จ์ˆœํ•œ ์„ค๊ณ„๋กœ, ์„ธ์ƒ์„ ๋ฐ”๊พผ CPUโ€
์ด๊ฒŒ ๋ฐ”๋กœ ARM์˜ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค ๐Ÿ˜Ž

๐ŸŽ Apple Silicon ์บ์‹œ ๊ตฌ์กฐ ์ •๋ฆฌ

์ถœ์ฒ˜ : https://woozzang.tistory.com/155

1. ๐Ÿ” ๋ฐฐ๊ฒฝ: ์™œ Apple์€ ์นฉ ์ •๋ณด๋ฅผ ์ˆจ๊ธธ๊นŒ?

Apple์€ ์ž์‚ฌ๊ฐ€ ์„ค๊ณ„ํ•œ ์นฉ์„ ์˜ค์ง ์ž์‚ฌ ๊ธฐ๊ธฐ์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
๊ฒฝ์Ÿ์‚ฌ์ฒ˜๋Ÿผ ์„ธ๋ถ€ ๊ตฌ์กฐ๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ณต๊ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์„ค๊ณ„๋„ ์ž์ฒด๋Š” ์•Œ ์ˆ˜ ์—†์ง€๋งŒ, ๊ฐ ํŒŒํŠธ์˜ ์ŠคํŽ™ ์ˆ˜์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

2. โš™๏ธ Apple Silicon ์ŠคํŽ™ ์š”์•ฝ

ํ•ญ๋ชฉFirestorm (๋น… ์ฝ”์–ด)Icestorm (๋ฆฌํ‹€ ์ฝ”์–ด)
์ฝ”์–ด ์ˆ˜2์ฝ”์–ด4์ฝ”์–ด
ํด๋Ÿญ2.99GHz1.82GHz
L1 ๋ช…๋ น์–ด ์บ์‹œ192KB128KB
L1 ๋ฐ์ดํ„ฐ ์บ์‹œ128KB64KB
L2 ์บ์‹œ8MB4MB
System Cache (๊ณตํ†ต)16MB

3. ๐Ÿ’ก ์บ์‹œ ๊ตฌ์กฐ์˜ ํŠน์ง•

โœ… Firestorm (๋น… ์ฝ”์–ด)

  • 192KB L1 I-Cache (๋ช…๋ น์–ด ์บ์‹œ)
    โ†’ ์ผ๋ฐ˜์ ์ธ ARM ๋น… ์ฝ”์–ด๋ณด๋‹ค 3๋ฐฐ, x86 ์•„ํ‚คํ…์ฒ˜๋ณด๋‹ค 6๋ฐฐ ํผ
    โ†’ ๊ทธ๋Ÿฐ๋ฐ๋„ ์•ก์„ธ์Šค ๋ ˆ์ดํ„ด์‹œ๋Š” ๋‹จ 3์‚ฌ์ดํด!

    • ๋น„๊ต:
      • AMD 32KB โ†’ 4 ์‚ฌ์ดํด
      • Intel Sunny Cove 48KB โ†’ 5 ์‚ฌ์ดํด
  • 128KB L1 D-Cache (๋ฐ์ดํ„ฐ ์บ์‹œ)
    โ†’ ํฌ๊ธฐ ์ž์ฒด๋„ ๋งค์šฐ ํผ

  • 8MB L2 ์บ์‹œ
    โ†’ ์ฝ”์–ด ๋‹จ๋… or ๊ณต์œ  ์—ฌ๋ถ€๋Š” ๋ฏธ๊ณต๊ฐœ์ง€๋งŒ, L2๋„ ์ƒ๋‹นํžˆ ๋„‰๋„‰ํ•จ

โœ… Icestorm (๋ฆฌํ‹€ ์ฝ”์–ด)

  • 128KB L1 I-Cache
    โ†’ ์‹ฌ์ง€์–ด ์ด ๋ฆฌํ‹€ ์ฝ”์–ด์กฐ์ฐจ๋„ ์ผ๋ฐ˜ ๋น… ์ฝ”์–ด๋ณด๋‹ค ํฐ ๋ช…๋ น์–ด ์บ์‹œ๋ฅผ ๊ฐ€์ง

  • 64KB L1 D-Cache

  • 4MB L2 ์บ์‹œ

๐Ÿง  "์‚ฌ์ดํด ์ˆ˜"๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

CPU๋Š” ๋‚ด๋ถ€์—์„œ ๋ชจ๋“  ๋™์ž‘์„ ํด๋Ÿญ ์‚ฌ์ดํด(clock cycle) ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, โ€œํ‹ฑํ†ก ํ‹ฑํ†กโ€ ํ•˜๋Š” ์‹œ๊ณ„์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” CPU์˜ ๋ฐ•์ž๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ผ์š”.

  • 1 ์‚ฌ์ดํด = CPU๊ฐ€ ๋ช…๋ น์–ด 1๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋‹จ์œ„ ์‹œ๊ฐ„
  • Access Latency = N ์‚ฌ์ดํด
    โ†’ ์–ด๋–ค ๋ฐ์ดํ„ฐ(์˜ˆ: ์บ์‹œ, ๋ฉ”๋ชจ๋ฆฌ)๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ N๋ฒˆ์˜ ํ‹ฑ์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋œป์ด์—์š”.

๐Ÿ“‰ ์‚ฌ์ดํด์ด ์ ๋‹ค๋Š” ๊ฑด ์–ด๋–ค ์˜๋ฏธ?

์˜ˆ๋ฅผ ๋“ค์–ด,

  • L1 ์บ์‹œ ์•ก์„ธ์Šค ์‹œ๊ฐ„์ด 3์‚ฌ์ดํด์ด๋ฉด โ†’ ๋ฐ์ดํ„ฐ ์ฝ๋Š” ๋ฐ 3ํ‹ฑ ๊ฑธ๋ฆผ
  • 5์‚ฌ์ดํด์ด๋ฉด โ†’ 5ํ‹ฑ์ด๋‚˜ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜์ฃ !

CPU ์ž…์žฅ์—์„œ๋Š” ๋งค ์ดˆ๋งˆ๋‹ค ์ˆ˜์‹ญ์–ต ๋ฒˆ(=GHz ๋‹จ์œ„) ์—ฐ์‚ฐ์„ ํ•˜๋Š”๋ฐ,
์ด๋ ‡๊ฒŒ 1~2 ์‚ฌ์ดํด๋งŒ ์ฐจ์ด๋‚˜๋„ ์ „์ฒด ์—ฐ์‚ฐ ์†๋„์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ์ค˜์š”.

โœ… ์‚ฌ์ดํด์ด ์ž‘๋‹ค โ†’ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค โ†’ ์„ฑ๋Šฅ์— ๋” ์œ ๋ฆฌ

โš–๏ธ ๊ทธ๋Ÿฐ๋ฐ ์™œ ๋ชจ๋‘๊ฐ€ ์ž‘์€ ์‚ฌ์ดํด์„ ๋ชป ์“ฐ๋‚˜์š”?

์บ์‹œ ์‚ฌ์ดํด ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฑด ๋‹จ์ˆœํžˆ โ€œ๋น ๋ฅด๊ฒŒ ํ•ด์ฃผ์„ธ์š”~โ€ ํ•œ๋‹ค๊ณ  ๋˜๋Š” ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์  ์ œ์•ฝ์ด ์žˆ์–ด์š”:

์‚ฌ์ดํด ์ค„์ด๋Š” ๊ฒŒ ํž˜๋“  ์ด์œ 
์บ์‹œ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก โ†’ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋งŽ์ด ์ €์žฅํ•ด์•ผ ํ•ด์„œ โ†’ ํƒ์ƒ‰ ์‹œ๊ฐ„ ์ฆ๊ฐ€
์ž‘๊ณ  ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด โ†’ ํšŒ๋กœ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ + ์ „๋ ฅ ์†Œ๋ชจ ์ฆ๊ฐ€
์ „๋ ฅ, ๋ฐœ์—ด, ์„ค๊ณ„ ๋ณต์žก๋„ ๋“ฑ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ์ด ๋งŽ์Œ

๊ทธ๋ž˜์„œ ๋Œ€๋ถ€๋ถ„์€

  • ์ž‘๊ณ  ๋น ๋ฅธ L1 ์บ์‹œ๋Š” 32KB~64KB, 4~5์‚ฌ์ดํด
  • ์• ํ”Œ์€ ์—ฌ๊ธฐ์— ๊ทนํ•œ์˜ ํšŒ๋กœ ์„ค๊ณ„ + ํŠธ๋žœ์ง€์Šคํ„ฐ ์—ฌ์œ ๋ฅผ ์Ÿ์•„๋ถ€์–ด
    โ†’ 192KB์ธ๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  3์‚ฌ์ดํด์„ ๋‹ฌ์„ฑํ•œ ๊ฑฐ์˜ˆ์š”.

๐Ÿ”ฅ ์ •๋ฆฌ: ์‚ฌ์ดํด ์ˆ˜, ์ž‘์„์ˆ˜๋ก ์ข‹์„๊นŒ?

๋น„๊ต ํ•ญ๋ชฉ์„ค๋ช…
โœ… ๋‚ฎ์€ ์‚ฌ์ดํด๋น ๋ฅธ ์‘๋‹ต ์†๋„, ์„ฑ๋Šฅ ์œ ๋ฆฌ
โŒ ๋†’์€ ์‚ฌ์ดํด๋А๋ฆผ, ํŒŒ์ดํ”„๋ผ์ธ stall ๊ฐ€๋Šฅ์„ฑ
โš ๏ธ Trade-off๋‚ฎ์ถ”๋ ค๋ฉด ์บ์‹œ ํฌ๊ธฐ, ์ „๋ ฅ, ์„ค๊ณ„ ๋‚œ์ด๋„ โ†‘

๐Ÿ”Ž ์š”์•ฝ ํ•œ ์ค„:
์บ์‹œ ์ ‘๊ทผ ์‚ฌ์ดํด ์ˆ˜๋Š” ์ž‘์„์ˆ˜๋ก ๋น ๋ฅด๊ณ  ์ข‹์ง€๋งŒ, ์ค„์ด๊ธฐ ์–ด๋ ค์šด ๊ธฐ์ˆ ์˜ ์ •์ˆ˜์˜ˆ์š”.
Apple Silicon์ด ๋Œ€๋‹จํ•œ ์ด์œ ๋„, ์—„์ฒญ ํฐ ์บ์‹œ ์šฉ๋Ÿ‰์„ ์—„์ฒญ ๋น ๋ฅธ ์†๋„(3์‚ฌ์ดํด)๋กœ ์šด์˜ํ•œ๋‹ค๋Š” ์ ์ด์—์š”!

4. ๐Ÿง  ์‹œ์Šคํ…œ ์บ์‹œ (System Cache)?

  • 16MB System Cache๋Š” L3 ์บ์‹œ ๋˜๋Š” SoC ๋ ˆ๋ฒจ ๊ณต์œ  ์บ์‹œ๋กœ ์ถ”์ •
  • ์ฝ”์–ด ๊ฐ„ ๊ณต์œ  ๋˜๋Š” GPU/๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ์™€ ์—ฐ๊ฒฐ๋œ ํ†ตํ•ฉ ์บ์‹œ์ผ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ
  • ๊ตฌ์ฒด์ ์ธ ๊ตฌ์กฐ๋Š” Apple์ด ๊ณต์‹์ ์œผ๋กœ ๊ณต๊ฐœํ•˜์ง€ ์•Š์Œ

5. ๐Ÿงพ ํ•œ ์ค„ ์š”์•ฝ

Apple Silicon์˜ ์บ์‹œ๋Š” โ€œ๋ฌด์ง€๋ง‰์ง€ํ•˜๊ฒŒ ํฌ๊ณ  ๋น ๋ฅด๋‹คโ€.
ํŠนํžˆ Firestorm์˜ 192KB ๋ช…๋ น์–ด ์บ์‹œ๋Š” ๋ ˆ์ดํ„ด์‹œ 3์‚ฌ์ดํด์ด๋ผ๋Š” ๋†€๋ผ์šด ํšจ์œจ์„ ๋ณด์—ฌ์ฃผ๋ฉฐ,
ARM/AMD/Intel์˜ ์ „ํ†ต์  ์„ค๊ณ„๋ฅผ ๋›ฐ์–ด๋„˜๋Š” ์ˆ˜์ค€.

6. โœจ ์ฐธ๊ณ  ๋ฐœ์–ธ

โ€œ์• ํ”Œ์— ํ˜์‹  ์—†๋‹ค๊ณ  ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€, ์• ํ”Œ์„ ์ž˜ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“คโ€ฆโ€

์ด ๊ตฌ์กฐ ํ•˜๋‚˜๋งŒ ๋ด๋„ Apple์ด ์นฉ ์„ค๊ณ„์—์„œ ์–ผ๋งˆ๋‚˜ ๊ทน๋‹จ์ ์ธ ์ตœ์ ํ™”๋ฅผ ์ถ”๊ตฌํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ปค์Šคํ…€ ISA๋Š” ์•„๋‹ˆ์ง€๋งŒ, ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์ž์ฒด๋Š” ์ตœ๊ณ  ์ˆ˜์ค€์ด๋ผ ํ‰๊ฐ€๋ฐ›๋Š” ์ด์œ ์ด๊ธฐ๋„ ํ•˜์ฃ .

์ถœ์ฒ˜

profile
๋‚ด ์ง€์‹์„ ๊ธฐ๋กํ•˜์—ฌ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ํ•˜์—ฌ ํ•จ๊ป˜ ๋ฐœ์ „ํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋˜๊ณ  ์‹ถ๋‹ค. gitbook์—๋„ ์ •๋ฆฌ์ค‘ ~

0๊ฐœ์˜ ๋Œ“๊ธ€