ํฌ์ŠคํŠธ

CS โ€” context switching followup

CS โ€” context switching followup

๐Ÿ“• 05/13 โ€” Context Switching ๋ชจ์˜๋ฉด์ ‘ ๊ผฌ๋ฆฌ์งˆ๋ฌธ ์ •๋ฆฌ

21_context_switching.md ๋ชจ์˜๋ฉด์ ‘ ์งํ›„ ๋‚˜์˜จ ํ›„์† ์งˆ๋ฌธ 5๊ฐœ๋ฅผ 1:1๋กœ ์ •๋ฆฌํ•œ ๋…ธํŠธ. ๋ณธ๋ฌธ์€ 21๋ฒˆ ์›๋ณธ์˜ ํ•ด๋‹น ์„น์…˜์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , ์—ฌ๊ธฐ์„œ๋Š” ๋‹ต๋ณ€๋งŒ ์งง๊ฒŒ ๊ฒฐ๋ก  โ†’ ๊ทผ๊ฑฐ โ†’ ์ฝ”๋“œ/์˜ˆ ์ˆœ์œผ๋กœ ์••์ถ•ํ•œ๋‹ค.


๋ชฉ์ฐจ

  1. interrupt๊ฐ€ ๋ญ˜๊นŒ
  2. PCB์˜ ์—ญํ• 
  3. ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์ผ๊นŒ์š”?
  4. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๊ณผ์ •์ค‘ ์บ์‹œ ํžˆํŠธ์œจ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์Šค๋ ˆ๋“œ๊ฐ€ ๋น ๋ฅด๋‹ค
  5. RAM๊ณผ ๋ ˆ์ง€์Šคํ„ฐ ์‚ฌ์ด์˜ ์ €์žฅ๊ณต๊ฐ„

1. interrupt๊ฐ€ ๋ญ˜๊นŒ

ํ•œ ์ค„ ๊ฒฐ๋ก  โ€” Interrupt(์ธํ„ฐ๋ŸฝํŠธ)๋Š” CPU์˜ ํ˜„์žฌ ์‹คํ–‰ ํ๋ฆ„์„ ๊ฐ•์ œ๋กœ ์ค‘๋‹จ์‹œํ‚ค๊ณ , IDT(Interrupt Descriptor Table)์— ๋“ฑ๋ก๋œ ํ•ธ๋“ค๋Ÿฌ๋กœ ์ ํ”„์‹œํ‚ค๋Š” ํ•˜๋“œ์›จ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์˜ ์ฃผ์š” ๋ฐœํ™”์ (ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ)์ด์ž, ๋ชจ๋“œ ์Šค์œ„์น˜์˜ ๋ณธ์ฒด ํŠธ๋ฆฌ๊ฑฐ์ด๊ธฐ๋„ ํ•˜๋‹ค.

1-1. ํ๋ฆ„

1
2
3
4
5
6
7
8
9
10
11
[CPU๊ฐ€ ๋ช…๋ น N ์‹คํ–‰ ์ค‘]
       โ†“
[์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ ๋„์ฐฉ โ€” ํƒ€์ด๋จธยทํ‚ค๋ณด๋“œยทNIC ๋“ฑ]
       โ†“
[CPU๊ฐ€ ํ˜„์žฌ PCยทํ”Œ๋ž˜๊ทธ๋ฅผ ์ž๋™ ์ €์žฅ โ†’ ์ปค๋„ ์Šคํƒ์œผ๋กœ]
       โ†“
[IDT[์ธํ„ฐ๋ŸฝํŠธ ๋ฒˆํ˜ธ] โ†’ ํ•ธ๋“ค๋Ÿฌ ์ฃผ์†Œ ์ ํ”„]
       โ†“
[ํ•ธ๋“ค๋Ÿฌ ์‹คํ–‰ (์ปค๋„ ๋ชจ๋“œ)]
       โ†“
[iret ๋ช…๋ น โ†’ ์›๋ž˜ PC ๋ณต์› โ†’ ์‚ฌ์šฉ์ž ๋ชจ๋“œ ๋ณต๊ท€]

1-2. ์„ธ ์ข…๋ฅ˜

์ข…๋ฅ˜๋ฐœ์ƒ ์›์ฒœ์˜ˆ
ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ (IRQ)์™ธ๋ถ€ ์žฅ์น˜ ์‹ ํ˜ธํƒ€์ด๋จธ(์Šค์ผ€์ค„๋Ÿฌ ๋ฐœํ™”์ ), ํ‚ค๋ณด๋“œ ์ž…๋ ฅ, NIC ํŒจํ‚ท ์ˆ˜์‹ , ๋””์Šคํฌ I/O ์™„๋ฃŒ
์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ / Trap๋ช…์‹œ์  ๋ช…๋ น์–ด (int 0x80ยทsyscallยทsysenter)์‹œ์Šคํ…œ ์ฝœ ํ˜ธ์ถœ โ€” ์‚ฌ์šฉ์ž ์ฝ”๋“œ๊ฐ€ ์˜๋„์ ์œผ๋กœ ์ปค๋„ ์ง„์ž…
์˜ˆ์™ธ (Exception)CPU ๋‚ด๋ถ€ ์˜ค๋ฅ˜Page Fault, Divide-by-Zero, Invalid Opcode, General Protection Fault

1-3. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ๊ณผ์˜ ๊ด€๊ณ„

  • ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด โ†’ ์ปค๋„ ์ง„์ž… โ†’ ์Šค์ผ€์ค„๋Ÿฌ ์‹คํ–‰ โ†’ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ๊ฐˆ์•„๋ผ์šฐ๋ฉด ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ๋ฐœ์ƒ.
  • ๋ชจ๋“  ๋ชจ๋“œ ์Šค์œ„์น˜๊ฐ€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฑด ์•„๋‹˜ โ€” ์‹œ์Šคํ…œ ์ฝœ์ด ์ฆ‰์‹œ ๋๋‚˜๋ฉด ๊ฐ™์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ๋ณต๊ท€ํ•  ๋ฟ ์Šค์œ„์นญ์€ ์—†์Œ.
  • ์ธํ„ฐ๋ŸฝํŠธ โ‰  ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ โ€” ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํŠธ๋ฆฌ๊ฑฐ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๋Š” ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜.

21๋ฒˆ ๋ณธ๋ฌธ ยงโ€์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐโ€ ์ฒซ ํ•ญ๋ชฉ(ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ๋งŒ๋ฃŒ) ์ฐธ์กฐ.


2. PCB์˜ ์—ญํ• 

ํ•œ ์ค„ ๊ฒฐ๋ก  โ€” PCB(Process Control Block, ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก)๋Š” OS๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์ƒํƒœ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ์ปค๋„ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. ์‹๋ณ„ยท๊ฒฉ๋ฆฌยท์ž์›ยท์Šค์ผ€์ค„๋งยท์ปจํ…์ŠคํŠธ ์ €์žฅ ๋‹ค์„ฏ ์—ญํ• ์ด ํ•œ ๊ตฌ์กฐ์ฒด ์•ˆ์— ๋ชจ์ธ๋‹ค.

2-1. ๋‹ค์„ฏ ์—ญํ• 

์—ญํ• ๋ณด๊ด€ ๋‚ด์šฉ
โ‘  ์‹๋ณ„ (Identification)PID, ๋ถ€๋ชจ PID, ์‚ฌ์šฉ์ž ID, ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน
โ‘ก ์ฃผ์†Œ ๊ณต๊ฐ„ ๊ฒฉ๋ฆฌ (Isolation)ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋ฒ ์ด์Šค ์ฃผ์†Œ(x86 CR3 ๊ฐ’). ํ”„๋กœ์„ธ์Šค ์ „ํ™˜ ์‹œ ์ด ๊ฐ’์ด CR3 ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ ์žฌ๋˜๋ฉด์„œ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ํ†ต์งธ๋กœ ๋ฐ”๋€œ
โ‘ข ์ž์› ๊ด€๋ฆฌ (Resource)์—ด๋ฆฐ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ํ…Œ์ด๋ธ”, ํ•ธ๋“ค ํ…Œ์ด๋ธ”, ์‹œ๊ทธ๋„ ํ•ธ๋“ค๋Ÿฌ, ๋ฉ”๋ชจ๋ฆฌ ๋งต ์˜์—ญ(VMA), ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ
โ‘ฃ ์Šค์ผ€์ค„๋ง ์ƒํƒœ (Scheduling)Ready / Running / Wait ์ƒํƒœ, ์šฐ์„ ์ˆœ์œ„, ๋ˆ„์  CPU ์‹œ๊ฐ„, time slice ์ž”๋Ÿ‰
โ‘ค ์ปจํ…์ŠคํŠธ ์ €์žฅ ๋งค์ฒด (Context Storage)ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„ ์ปจํ…์ŠคํŠธ(๋ ˆ์ง€์Šคํ„ฐ ์Šค๋ƒ…์ƒท์€ ๋ณดํ†ต TCB์— ๋“ค์–ด๊ฐ€์ง€๋งŒ, ๋‹จ์ผ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค๋‚˜ ์˜› ์‹œ์Šคํ…œ์—์„  PCB์— ์ง์ ‘ ๋ณด๊ด€)

2-2. OS๋ณ„ ์‹ค์ฒด

OSPCB ๊ตฌ์กฐ์ฒด์œ„์น˜
Linuxtask_struct<linux/sched.h> โ€” 5,000+ ์ค„ ๊ฑฐ๋Œ€ ๊ตฌ์กฐ์ฒด. ์Šค๋ ˆ๋“œ๋„ ๊ฐ™์€ ๊ตฌ์กฐ (NPTL: 1:1 ์Šค๋ ˆ๋“œ ๋ชจ๋ธ)
WindowsEPROCESS์ปค๋„ ๊ฐ์ฒด. ๊ทธ ์•ˆ์— KPROCESS(์Šค์ผ€์ค„๋Ÿฌ์šฉ)์™€ ๋ณ„๋„๋กœ ETHREAD/KTHREAD(์Šค๋ ˆ๋“œ๋ณ„)๊ฐ€ ์—ฐ๊ฒฐ
xv6 (๊ต์œก์šฉ)struct procproc.h โ€” ํ•œ ํŽ˜์ด์ง€ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋‹จ์ˆœ ๋ฒ„์ „, ์ปจํ…์ŠคํŠธยทํŽ˜์ด์ง€ ๋””๋ ‰ํ† ๋ฆฌยทํŒŒ์ผ ํ…Œ์ด๋ธ”๋งŒ ๋ณด๊ด€

2-3. ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ์‹œ PCB์˜ ํ๋ฆ„

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ T_old]
       โ†“
[1] T_old์˜ ๋ ˆ์ง€์Šคํ„ฐ โ†’ T_old์˜ TCB๋กœ ์ €์žฅ
       โ†“
[2] PCB ๋น„๊ต: T_old์˜ PCB == T_new์˜ PCB?
       โ”œโ”€ YES (๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด ์Šค๋ ˆ๋“œ ์ „ํ™˜)
       โ”‚   โ””โ”€ CR3 ๊ทธ๋Œ€๋กœ, TLB ๋ณด์กด, ์บ์‹œ ๋ณด์กด โ†’ ๋น ๋ฆ„
       โ””โ”€ NO  (ํ”„๋กœ์„ธ์Šค ์ „ํ™˜)
           โ””โ”€ T_new์˜ PCB.CR3 ๊ฐ’์„ CR3 ๋ ˆ์ง€์Šคํ„ฐ์— ์ ์žฌ
              โ†’ TLB flush (PCID ์—†์œผ๋ฉด)
              โ†’ ์บ์‹œ ์ฝœ๋“œ โ†’ ๋А๋ฆผ
       โ†“
[3] T_new์˜ TCB์—์„œ ๋ ˆ์ง€์Šคํ„ฐ ๋ณต์›
       โ†“
[T_new ์‹คํ–‰ ์‹œ์ž‘]

2-4. ๋ฉด์ ‘์—์„œ ๊ฐ•์กฐ ํฌ์ธํŠธ

  • โ€œPCB๋Š” ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„, TCB๋Š” ์Šค๋ ˆ๋“œ ๋‹จ์œ„โ€ โ€” ๋‘˜์ด ๋ถ„๋ฆฌ๋ผ ์žˆ์–ด์•ผ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ PCB๋ฅผ ๊ณต์œ ํ•ด ์ „ํ™˜ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.
  • CR3๊ฐ€ PCB์— ๋“ค์–ด ์žˆ๋‹ค๋Š” ์ ์ด ์ฃผ์†Œ ๊ณต๊ฐ„ ๊ฒฉ๋ฆฌ์˜ ๋ฌผ๋ฆฌ์  ๊ตฌํ˜„ โ€” ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋งŒ๋“œ๋Š” ํ•œ ์ค„.

21๋ฒˆ ๋ณธ๋ฌธ ยงโ€ํ•ต์‹ฌ ๊ฐœ๋…โ€ โ†’ PCB ํ–‰ ์ฐธ์กฐ. 22๋ฒˆ IPC ๋ณธ๋ฌธ๋„ PCBยทํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”ยทํ•ธ๋“ค ํ…Œ์ด๋ธ”์ด IPC ๋น„์šฉ์˜ ์ถœ๋ฐœ์ ์ด๋ผ๊ณ  ์งš์Œ.


3. ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์ผ๊นŒ์š”?

ํ•œ ์ค„ ๊ฒฐ๋ก  โ€” ์ผ๋ฐ˜์ ์œผ๋กœ โ€œ๋ฉ”๋ชจ๋ฆฌโ€๋ผ ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค. ๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ณต๊ฐ„์ด์ง€๋งŒ ์œ„์น˜ยท์†๋„ยท์ ‘๊ทผ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ณ , ์šด์˜์ฒด์ œยท์ปดํ“จํ„ฐ ๊ตฌ์กฐ ๊ต๊ณผ์„œ์—์„œ๋„ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต(memory hierarchy)์˜ ์ตœ์ƒ์œ„ ๋‹จ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๋˜ โ€œ๋ฉ”๋ชจ๋ฆฌโ€๋ผ๋Š” ์šฉ์–ด์™€๋Š” ๊ตฌ๋ถ„ํ•œ๋‹ค.

3-1. ์ฐจ์ด๋ฅผ ํ•œ ํ‘œ๋กœ

ํ•ญ๋ชฉ๋ ˆ์ง€์Šคํ„ฐ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ (RAM)
์œ„์น˜CPU ์ฝ”์–ด ๋‚ด๋ถ€CPU ์™ธ๋ถ€, ๋ฉ”์ธ๋ณด๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์Šฌ๋กฏ
์ ‘๊ทผ ์†๋„~0.3 ns~100 ns (300๋ฐฐ)
์šฉ๋Ÿ‰64bit ร— ์ˆ˜์‹ญ ๊ฐœ (์ˆ˜๋ฐฑ ๋ฐ”์ดํŠธ)์ˆ˜ GB
์ ‘๊ทผ ๋ฐฉ์‹์ด๋ฆ„์œผ๋กœ (rax, rbx, xmm0โ€ฆ)์ฃผ์†Œ๋กœ (MOV [0x1000], rax)
๋ช…๋ น์–ด ์ธ์ฝ”๋”ฉopcode ์•ˆ์— ๋ ˆ์ง€์Šคํ„ฐ ๋ฒˆํ˜ธ๊ฐ€ ์ง์ ‘ ๋“ค์–ด๊ฐopcode + ์ฃผ์†Œ ๊ณ„์‚ฐ
๊ณต์œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ์‹œ ์ €์žฅยท๋ณต์› ํ•„์š” (์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ณ„๊ฐœ)๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ ๊ณต์œ 
์žฌ๋ฃŒSRAM (ํŠธ๋žœ์ง€์Šคํ„ฐ 6๊ฐœ/bit)DRAM (ํŠธ๋žœ์ง€์Šคํ„ฐ+์ปคํŒจ์‹œํ„ฐ 1์Œ/bit)

3-2. ์™œ โ€œ๋ฉ”๋ชจ๋ฆฌโ€๋ผ ์•ˆ ๋ถ€๋ฅด๋‚˜

  • ์–ธ์–ด ๊ด€์Šต โ€” โ€œ๋ฉ”๋ชจ๋ฆฌ์— ์“ด๋‹คโ€๋Š” ๋ณดํ†ต RAM์— store ๋ช…๋ น(MOV [addr], r)์„ ๋ณด๋‚ธ๋‹ค๋Š” ๋œป. ๋ ˆ์ง€์Šคํ„ฐ๋Š” โ€œ๋ ˆ์ง€์Šคํ„ฐ์— ๋‘”๋‹คโ€๊ณ  ๋”ฐ๋กœ ํ‘œํ˜„.
  • ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ถ„๋ฆฌ โ€” ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„ ์•ˆ์—์„œ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ, ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฐ–. &register ๊ฐ™์€ ๊ฒŒ ๋ถˆ๊ฐ€๋Šฅ(C/C++์—์„œ register ํ‚ค์›Œ๋“œ ๋ณ€์ˆ˜์— & ๋ชป ์”€์ด ์ด ๋•Œ๋ฌธ).
  • MMU ์ ์šฉ ์•ˆ ๋จ โ€” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”ยทTLB๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์—๋งŒ ์ ์šฉ. ๋ ˆ์ง€์Šคํ„ฐ๋Š” MMU ํ†ต๊ณผ ์•ˆ ํ•จ.
  • ์บ์‹œ ๊ณ„์ธต ์™ธ๋ถ€ โ€” L1/L2/L3 ์บ์‹œ๋Š” โ€œ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์˜ ์ผ๋ถ€โ€๋กœ ์ž์ฃผ ๋ฌถ์ด์ง€๋งŒ, ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๊ทธ ์œ„์— ๋ณ„๋„๋กœ ๋†“์ž„.

3-3. ๊ทธ๋Ÿฐ๋ฐ ์™œ ํ—ท๊ฐˆ๋ฆฌ๋‚˜

  • ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต(memory hierarchy) ๋‹ค์ด์–ด๊ทธ๋žจ์—์„  ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋งจ ์œ„์— ๊ทธ๋ฆผ. โ†’ โ€œํฌํ•จ๋œ๋‹คโ€๊ณ  ์˜คํ•ด ๊ฐ€๋Šฅ.
  • ์ผ๋ถ€ ISA(Itanium ๋“ฑ)์—์„  ๋ ˆ์ง€์Šคํ„ฐ ์œˆ๋„์šฐยท๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ™์€ ๋ชจํ˜ธํ•œ ์ผ€์ด์Šค ์กด์žฌ.
  • ์ž„๋ฒ ๋””๋“œยทํ•˜๋“œ์›จ์–ด์—์„  โ€œ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ I/O(MMIO) ๋ ˆ์ง€์Šคํ„ฐโ€๋ผ๋Š” ํ‘œํ˜„ ์”€ โ†’ ์ด๊ฑด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์ฒ˜๋Ÿผ ์ ‘๊ทผํ•˜๋Š” ๋””๋ฐ”์ด์Šค ์ œ์–ด์šฉ ๋ ˆ์ง€์Šคํ„ฐ, CPU ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ์™€ ๋ณ„๊ฐœ.

3-4. ๋ฉด์ ‘ ๋‹ต๋ณ€ ํ•œ ์ค„

โ€œ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์˜ ์ตœ์ƒ์œ„ ๋‹จ์œผ๋กœ ๋ถ„๋ฅ˜๋˜๊ธด ํ•˜์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ โ€˜๋ฉ”๋ชจ๋ฆฌโ€™๋ผ๊ณ  ๋ถ€๋ฅด์ง„ ์•Š์Šต๋‹ˆ๋‹ค. CPU ์ฝ”์–ด ๋‚ด๋ถ€์— ์žˆ๊ณ , ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉฐ, MMUยทํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์—์„œ RAM๊ณผ ๋ถ„๋ช…ํžˆ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.โ€

21๋ฒˆ ๋ณธ๋ฌธ ยงโ€ํ•ต์‹ฌ ๊ฐœ๋…โ€ โ†’ โ€œ๋ ˆ์ง€์Šคํ„ฐ vs ๋ฉ”๋ชจ๋ฆฌโ€ ํ–‰ ์ฐธ์กฐ.


4. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๊ณผ์ •์ค‘ ์บ์‹œ ํžˆํŠธ์œจ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์Šค๋ ˆ๋“œ๊ฐ€ ๋น ๋ฅด๋‹ค

ํ•œ ์ค„ ๊ฒฐ๋ก  โ€” ์Šค๋ ˆ๋“œ ์ „ํ™˜์€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์˜ ์ฝ”๋“œยทํž™ยท์ „์—ญ ๋ฐ์ดํ„ฐ๊ฐ€ L1/L2/L3 ์บ์‹œ์— ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์–ด ์บ์‹œ ํžˆํŠธ์œจ์„ ์œ ์ง€ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค ์ „ํ™˜์€ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ๋ฐ”๋€Œ๋ฉด์„œ TLB flush + ์บ์‹œ ์ฝœ๋“œ(cache cold) ๊ฐ€ ๋ฐœ์ƒํ•ด ๋ฏธ์Šค๊ฐ€ ๋ˆ„์ ๋œ๋‹ค. ์ด๊ฒŒ โ€œ์Šค๋ ˆ๋“œ ์ „ํ™˜์ด ํ”„๋กœ์„ธ์Šค ์ „ํ™˜๋ณด๋‹ค 5~10๋ฐฐ ๋น ๋ฅด๋‹คโ€๋Š” ๋ง์˜ ํ•ต์‹ฌ ๊ทผ๊ฑฐ.

4-1. ๋น„์šฉ ๋น„๊ต ํ‘œ

๋น„์šฉ ํ•ญ๋ชฉ์Šค๋ ˆ๋“œ ์ „ํ™˜ (๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด)ํ”„๋กœ์„ธ์Šค ์ „ํ™˜
๋ ˆ์ง€์Šคํ„ฐ ์ €์žฅยท๋ณต์›โœ… ๋ฐœ์ƒ (~์ˆ˜๋ฐฑ ns)โœ… ๋ฐœ์ƒ (๋™์ผ)
์ปค๋„ ์ง„์ž… (๋ชจ๋“œ ์Šค์œ„์น˜)โœ… ๋ฐœ์ƒโœ… ๋ฐœ์ƒ
ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋ฒ ์ด์Šค (CR3) ๊ต์ฒดโŒโœ… ๋ฐœ์ƒ
TLB flushโŒ (PCID ์—†์–ด๋„ ์•ˆ ์ผ์–ด๋‚จ)โœ… ๋ฐœ์ƒ (PCID ์—†์œผ๋ฉด ์ „์ฒด flush)
L1/L2 ์บ์‹œ ์ฝœ๋“œโŒ โ€” ๊ฐ™์€ ์ฝ”๋“œยท์ „์—ญยทํž™์ด ๊ทธ๋Œ€๋กœ ์‚ด์•„์žˆ์Œโœ… ๋ฐœ์ƒ โ€” ์ƒˆ ํ”„๋กœ์„ธ์Šค ๋ฐ์ดํ„ฐ ์ฑ„์›Œ์•ผ ํ•จ
L3 ์บ์‹œ ์ฝœ๋“œโŒ๋ถ€๋ถ„ ๋ฐœ์ƒ (์ฝ”์–ด ๊ณต์œ ๋ผ ์ผ๋ถ€ ๋ณด์กด)
๋ถ„๊ธฐ ์˜ˆ์ธก๊ธฐ / ํŒŒ์ดํ”„๋ผ์ธ์•ฝ๊ฐ„ ๋ฌดํšจํ™”๋” ํฌ๊ฒŒ ๋ฌดํšจํ™”
์ „์ฒด ๋น„์šฉ (๋Œ€๋žต)1~3 ฮผs5~15 ฮผs (์Šค๋ ˆ๋“œ์˜ 5~10๋ฐฐ)

4-2. ์™œ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ์Šค๋ ˆ๋“œ๋Š” ์บ์‹œ๊ฐ€ ์‚ด์•„์žˆ๋‚˜

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ํ”„๋กœ์„ธ์Šค P ์•ˆ์— ์Šค๋ ˆ๋“œ T1, T2๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž.
T1์ด ์ฝ”๋“œ X ์‹คํ–‰ โ†’ X์˜ ๋ช…๋ น์–ด๊ฐ€ L1i, ๋ฐ์ดํ„ฐ๊ฐ€ L1d/L2/L3์— ์บ์‹œ๋จ.

T1 โ†’ T2 ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜:
  - ๋‘˜ ๋‹ค ๊ฐ™์€ P์˜ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„ ๊ณต์œ 
  - ๊ฐ™์€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”, ๊ฐ™์€ ๊ฐ€์ƒโ†’๋ฌผ๋ฆฌ ๋งคํ•‘
  - X์˜ ์ฝ”๋“œ/๋ฐ์ดํ„ฐ๋Š” ๊ฐ™์€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ์— ๊ทธ๋Œ€๋กœ ์žˆ๊ณ ,
    ์บ์‹œ๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ์ธ๋ฑ์‹ฑ(๋ณดํ†ต VIPT/PIPT)๋˜๋ฏ€๋กœ ์œ ํšจ
  - T2๊ฐ€ ๊ฐ™์€ ์ฝ”๋“œ ์˜์—ญ์ด๋‚˜ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋งŒ์ง€๋ฉด ์ฆ‰์‹œ ์บ์‹œ ํžˆํŠธ

T1 โ†’ T3 (๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค Q์˜ ์Šค๋ ˆ๋“œ) ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜:
  - ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„ ์ž์ฒด๊ฐ€ ๋ฐ”๋€œ (CR3 ๊ต์ฒด)
  - L1/L2์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฌผ๋ฆฌ์ ์œผ๋ก  ๋‚จ์•„์žˆ์ง€๋งŒ, T3๊ฐ€ ๋งŒ์งˆ ์ฃผ์†Œ๋“ค์€
    Q์˜ ์ฝ”๋“œยทํž™ยท์ „์—ญ โ†’ ์บ์‹œ์— ๊ฑฐ์˜ ์—†์Œ
  - ์ค„์ค„์ด miss โ†’ DRAM ์ ‘๊ทผ(~100ns) ๋ฐ˜๋ณต โ†’ ๋А๋ ค์ง

4-3. TLB flush๊ฐ€ ์ถ”๊ฐ€๋กœ ์–น๋Š” ๋น„์šฉ

  • TLB(Translation Lookaside Buffer)๋Š” ๊ฐ€์ƒโ†’๋ฌผ๋ฆฌ ์ฃผ์†Œ ๋งคํ•‘์„ ์บ์‹ฑํ•˜๋Š” MMU ๋‚ด๋ถ€ ์บ์‹œ (๋ณดํ†ต 64~1024 ์—”ํŠธ๋ฆฌ).
  • ํ”„๋กœ์„ธ์Šค ์ „ํ™˜ ์‹œ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ๋ฐ”๋€Œ๋ฏ€๋กœ TLB ์—”ํŠธ๋ฆฌ๊ฐ€ ๋ฌด์˜๋ฏธ โ†’ flush ํ•„์š”.
  • flush ์ดํ›„ ์ฒ˜์Œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ๋“ค์€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์›Œํฌ(page table walk) ๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ โ†’ 4๋‹จ๊ณ„ ํŽ˜์ด์ง• ์‹œ ๋ฉ”๋ชจ๋ฆฌ 4๋ฒˆ ์ถ”๊ฐ€ ์ ‘๊ทผ.
  • ํ˜„๋Œ€ CPU์˜ PCID(Process Context ID, x86) / ASID(ARM) ๋Š” TLB ์—”ํŠธ๋ฆฌ๋ฅผ ํ”„๋กœ์„ธ์Šค๋ณ„๋กœ ํƒœ๊น…ํ•ด ์ „์ฒด flush๋ฅผ ํšŒํ”ผ. ๊ทธ๋ž˜๋„ ์บ์‹œ ์ฝœ๋“œ๋Š” ๋ง‰์„ ์ˆ˜ ์—†์Œ.

4-4. ๋ฉด์ ‘์—์„œ ๊ฐ•์กฐ ํฌ์ธํŠธ

  • โ€œ5~10๋ฐฐ ์ฐจ์ด๋Š” ๋ ˆ์ง€์Šคํ„ฐ ์ €์žฅ๋Ÿ‰ ์ฐจ์ด๊ฐ€ ์•„๋‹ˆ๋ผ TLB flush + ์บ์‹œ ์ฝœ๋“œ์˜ ๊ฐ„์ ‘ ๋น„์šฉ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.โ€ โ€” ์ง์ ‘ ๋น„์šฉ์€ ๊ฑฐ์˜ ๊ฐ™์Œ.
  • โ€œ๊ทธ๋ž˜์„œ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์“ฐ๋Š” ๊ฒŒ OS ์ฐจ์›์—์„œ ๊ถŒ์žฅ๋˜๋Š” ๋™์‹œ์„ฑ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค (CPU ์บ์‹œ ํ™œ์šฉ๋„ ์ธก๋ฉด).โ€
  • โ€œ๋‹จ, ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ฒฝ์Ÿ์œผ๋กœ false sharing ๊ฐ™์€ ์บ์‹œ ๋ผ์ธ ์˜ค์—ผ์ด ์ผ์–ด๋‚˜๋ฉด ์ด ์ด์ ์ด ๋ฌดํšจํ™”๋  ์ˆ˜ ์žˆ์–ด์š”.โ€ (๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์บ์‹œ ์ด์Šˆ๋กœ ๊ผฌ๋ฆฌ ๊ฐ€๋Šฅ)

21๋ฒˆ ๋ณธ๋ฌธ ยงโ€๋น„์šฉ ์š”์†Œโ€ โ†’ โ€œ์บ์‹œ ์ฝœ๋“œโ€ยทโ€TLB flushโ€ ํ–‰, ยงโ€๋น„๊ตโ€ โ†’ โ€œ์บ์‹œ ํžˆํŠธ์œจ๋กœ ๋ณธ ์Šค๋ ˆ๋“œ ์šฐ์œ„โ€ ํ–‰ ์ฐธ์กฐ.


5. RAM๊ณผ ๋ ˆ์ง€์Šคํ„ฐ ์‚ฌ์ด์˜ ์ €์žฅ๊ณต๊ฐ„

ํ•œ ์ค„ ๊ฒฐ๋ก  โ€” L1 / L2 / L3 ์บ์‹œ (SRAM ๊ธฐ๋ฐ˜) ๊ฐ€ ๊ทธ ์ž๋ฆฌ์— ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์€ ์œ„๋กœ ๊ฐˆ์ˆ˜๋ก ๋น ๋ฅด๊ณ  ์ž‘๊ณ  ๋น„์‹ธ๋ฉฐ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ ๋ถ„์„์—์„œ ์บ์‹œ ์ฝœ๋“œ๊ฐ€ ๊ฒฐ์ •์ ์ด๋ผ๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ๋ฐ”๋กœ ์ด ๊ณ„์ธต ๋•Œ๋ฌธ์ด๋‹ค.

5-1. ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ํ•œ ํ‘œ

๋‹จ๊ณ„์œ„์น˜์šฉ๋Ÿ‰์ ‘๊ทผ ์‹œ๊ฐ„์žฌ๋ฃŒํŠน์ง•
๋ ˆ์ง€์Šคํ„ฐ (Register)CPU ์ฝ”์–ด ๋‚ด๋ถ€64bit ร— ์ˆ˜์‹ญ ๊ฐœ~0.3 nsSRAM์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผ, MMU ๋ฏธ์ ์šฉ
L1 ์บ์‹œ์ฝ”์–ด ์ „์šฉ32~64 KB (i-cache + d-cache ๋ถ„๋ฆฌ)~1 ns (4 cycle)SRAM๋ช…๋ น(L1i) / ๋ฐ์ดํ„ฐ(L1d) ๋ถ„๋ฆฌ. ๊ฐ€์žฅ ๋น ๋ฅธ ์บ์‹œ
L2 ์บ์‹œ์ฝ”์–ด ์ „์šฉ256 KB ~ 1 MB~3 ns (12 cycle)SRAML1 miss ์‹œ ๋‹ค์Œ ๋‹จ๊ณ„
L3 ์บ์‹œ (LLC)์—ฌ๋Ÿฌ ์ฝ”์–ด ๊ณต์œ 4 MB ~ ์ˆ˜์‹ญ MB~10 ns (40 cycle)SRAM์ฝ”์–ด ๊ฐ„ ๊ณต์œ  โ†’ ์บ์‹œ ์ผ๊ด€์„ฑ(MESI) ํ”„๋กœํ† ์ฝœ ๋™์ž‘ ์ง€์ 
RAM (๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ)CPU ๋ฐ–, ๋ฉ”๋ชจ๋ฆฌ ์Šฌ๋กฏ8 ~ 128 GB~100 nsDRAM๊ฐ€์ƒ ์ฃผ์†Œ โ†’ MMU/TLB โ†’ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” โ†’ ๋ฌผ๋ฆฌ ์ฃผ์†Œ
SSD/HDDI/O ๋ฒ„์Šค์ˆ˜๋ฐฑ GB ~ ์ˆ˜ TB~100 ฮผs (SSD) / ~10 ms (HDD)NAND / ์ž๊ธฐํŽ˜์ด์ง€ ํดํŠธ ์‹œ ์Šค์™‘/๋ฉ”๋ชจ๋ฆฌ ๋งต ํŒŒ์ผ

5-2. SRAM vs DRAM โ€” ์™œ ์บ์‹œ๋Š” ๋น ๋ฅด๊ณ  RAM์€ ๋А๋ฆฐ๊ฐ€

ํ•ญ๋ชฉSRAM (์บ์‹œยท๋ ˆ์ง€์Šคํ„ฐ)DRAM (๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ)
1 bit ๊ตฌ์„ฑํŠธ๋žœ์ง€์Šคํ„ฐ 6๊ฐœํŠธ๋žœ์ง€์Šคํ„ฐ 1๊ฐœ + ์ปคํŒจ์‹œํ„ฐ 1๊ฐœ
์†๋„๋น ๋ฆ„ (~ns)๋А๋ฆผ (~10 ns + ํ–‰ ํ™œ์„ฑํ™”)
๋ฐ€๋„๋‚ฎ์Œ (์…€ ํฌ๊ธฐ ํผ)๋†’์Œ (์ž‘์€ ์…€ โ†’ ๋Œ€์šฉ๋Ÿ‰)
๋‹จ๊ฐ€๋งค์šฐ ๋น„์Œˆ์Œˆ
๋ฆฌํ”„๋ ˆ์‹œ๋ถˆํ•„์š”์ฃผ๊ธฐ์  ๋ฆฌํ”„๋ ˆ์‹œ ํ•„์š” (์ปคํŒจ์‹œํ„ฐ ๋ˆ„์„ค)
ํœ˜๋ฐœ์„ฑํœ˜๋ฐœ์„ฑํœ˜๋ฐœ์„ฑ

โ†’ โ€œ๊ทธ๋ž˜์„œ ์บ์‹œ๋Š” ๋น„์‹ธ์„œ ์ž‘๊ณ , RAM์€ ์‹ธ์„œ ํฐโ€ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„.

5-3. ์บ์‹œ ๋ผ์ธ๊ณผ ์บ์‹œ ๋ฏธ์Šค

  • ์บ์‹œ๋Š” ๋ฐ”์ดํŠธ ๋‹จ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ ์บ์‹œ ๋ผ์ธ(cache line, ๋ณดํ†ต 64 byte) ๋‹จ์œ„๋กœ RAM๊ณผ ์ฃผ๊ณ ๋ฐ›์Œ.
  • ์บ์‹œ ๋ฏธ์Šค ์‹œ 64 byte ํ•œ ๋ฌถ์Œ์„ ํ†ต์งธ๋กœ ๋Œ์–ด์˜ด โ†’ ์ธ์ ‘ ๋ฐ์ดํ„ฐ๋Š” ์ž๋™์œผ๋กœ ๋”ฐ๋ผ์˜ด(๊ณต๊ฐ„ ์ง€์—ญ์„ฑ).
  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ์งํ›„ โ€œ์บ์‹œ ์ฝœ๋“œโ€๋Š” ๊ฒฐ๊ตญ ์ƒˆ ์Šค๋ ˆ๋“œ์˜ ์›Œํ‚น์…‹(working set)์ด ์บ์‹œ์— ์ฑ„์›Œ์งˆ ๋•Œ๊นŒ์ง€์˜ ๋ฏธ์Šค ๋ˆ„์ .

5-4. TLB๋Š” ์ด ๊ณ„์ธต ์–ด๋””์ธ๊ฐ€

  • TLB(Translation Lookaside Buffer)๋„ ์บ์‹œ์˜ ์ผ์ข…์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ ์บ์‹œ(L1/L2/L3)์™€ ๋ณ„๊ฐœ.
  • ์œ„์น˜: MMU ์•ˆ (CPU ์ฝ”์–ด ๋‚ด๋ถ€์˜ ํ•œ ๋ชจ๋“ˆ).
  • ์บ์‹ฑ ๋Œ€์ƒ: ๊ฐ€์ƒ โ†’ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๋งคํ•‘ (ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ).
  • ๋ณดํ†ต L1 TLB(~64 ์—”ํŠธ๋ฆฌ) + L2 TLB(~1024 ์—”ํŠธ๋ฆฌ) 2๋‹จ ๊ตฌ์„ฑ.
  • ํ”„๋กœ์„ธ์Šค ์ „ํ™˜ ์‹œ PCID/ASID ์—†์œผ๋ฉด flush โ†’ ์ดํ›„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์›Œํฌ ๋ˆ„์  (RAM ์ ‘๊ทผ 4๋ฒˆ๊นŒ์ง€).

5-5. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ์˜ ์ถœ์ฒ˜๋ฅผ ์ด ๊ณ„์ธต์œผ๋กœ ๋ถ„ํ•ด

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ์งํ›„ ์ƒˆ ์Šค๋ ˆ๋“œ ํ•œ ์ค„ ์‹คํ–‰:

[CPU๊ฐ€ ๋ช…๋ น fetch]
  โ†“ PC ๊ฐ€์ƒ ์ฃผ์†Œ โ†’ MMU โ†’ TLB lookup
       โ”œ TLB hit โ†’ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ์ฆ‰์‹œ (~1 ns)
       โ”” TLB miss โ†’ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์›Œํฌ (~์ˆ˜์‹ญ ns + DRAM 4๋ฒˆ)
  โ†“ ๋ฌผ๋ฆฌ ์ฃผ์†Œ โ†’ ์บ์‹œ lookup
       โ”œ L1i hit (~1 ns)
       โ”œ L2 hit (~3 ns)
       โ”œ L3 hit (~10 ns)
       โ”” ๋ฏธ์Šค ๋ชจ๋‘ โ†’ DRAM (~100 ns)
  โ†“ ๋ช…๋ น ๋””์ฝ”๋“œ โ†’ ์‹คํ–‰

๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ์Šค๋ ˆ๋“œ ์ „ํ™˜:
  - TLB ๋ณด์กด, ์บ์‹œ ๋ณด์กด โ†’ ๋Œ€๋ถ€๋ถ„ hit โ†’ ๋น ๋ฆ„

๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ์ „ํ™˜:
  - TLB flush, ์บ์‹œ ์ฝœ๋“œ โ†’ ์ฒซ ์ˆ˜๋ฐฑ~์ˆ˜์ฒœ ๋ช…๋ น ๋™์•ˆ miss ํญ์ฃผ โ†’ ๋А๋ฆผ

5-6. ๋ฉด์ ‘ ๋‹ต๋ณ€ ํ•œ ์ค„

โ€œRAM๊ณผ ๋ ˆ์ง€์Šคํ„ฐ ์‚ฌ์ด์—๋Š” L1 / L2 / L3 ์บ์‹œ๊ฐ€ ์žˆ๊ณ , ๋ชจ๋‘ SRAM ๊ธฐ๋ฐ˜์ด๋ผ DRAM์ธ RAM๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค. L1ยทL2๋Š” ์ฝ”์–ด ์ „์šฉ, L3๋Š” ์ฝ”์–ด ๊ณต์œ ๋ผ ์บ์‹œ ์ผ๊ด€์„ฑ ํ”„๋กœํ† ์ฝœ์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ ์ด์•ผ๊ธฐ์—์„œ โ€˜์บ์‹œ ์ฝœ๋“œโ€™๊ฐ€ ๊ฒฐ์ •์ ์ด๋ผ๋Š” ๊ฒŒ ๋ฐ”๋กœ ์ด ๊ณ„์ธต์ด ๋น„์–ด ์žˆ์„ ๋•Œ์˜ ๋ฏธ์Šค ๋ˆ„์ ์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.โ€

21๋ฒˆ ๋ณธ๋ฌธ ยงโ€ํ•ต์‹ฌ ๊ฐœ๋…โ€ โ†’ โ€œ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธตโ€ยทโ€L1/L2/L3 ์บ์‹œโ€ยทโ€SRAM vs DRAMโ€ ํ–‰ ์ฐธ์กฐ.


ํšŒ๊ท€ ๋งคํŠธ๋ฆญ์Šค โ€” ์ด 5๊ฐœ ์งˆ๋ฌธ์ด ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜๋‚˜

1
2
3
4
5
6
7
8
9
10
interrupt (1)
   โ†“ ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์Šค์ผ€์ค„๋Ÿฌ ํ˜ธ์ถœ โ†’ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ๋ฐœํ™”์ 
PCB (2)
   โ†“ ๊ต์ฒด ์—ฌ๋ถ€๊ฐ€ ์Šค๋ ˆ๋“œ vs ํ”„๋กœ์„ธ์Šค ์ „ํ™˜์„ ๊ฒฐ์ •
์บ์‹œ ํžˆํŠธ์œจ (4)
   โ†‘ PCB ๊ต์ฒด ์‹œ CR3 ๋ณ€๊ฒฝ โ†’ TLB flush + ์บ์‹œ ์ฝœ๋“œ
๋ ˆ์ง€์Šคํ„ฐ โ‰  ๋ฉ”๋ชจ๋ฆฌ (3)
   โ†‘ ์ปจํ…์ŠคํŠธ = ๋ ˆ์ง€์Šคํ„ฐ ์Šค๋ƒ…์ƒท. ๋ฉ”๋ชจ๋ฆฌ(RAM)์™€ ๊ตฌ๋ถ„๋˜๋Š” ๋ณ„๋„ ์ €์žฅ์†Œ
RAM โ†” ๋ ˆ์ง€์Šคํ„ฐ ์‚ฌ์ด (5)
   โ†‘ L1/L2/L3 ์บ์‹œ. ์บ์‹œ ์ฝœ๋“œ์˜ ๋ฌด๋Œ€

ํ•œ ์ค„ ์š”์•ฝ: ์ธํ„ฐ๋ŸฝํŠธ โ†’ PCB ๊ต์ฒด โ†’ CR3 ๋ณ€๊ฒฝ โ†’ TLB flush โ†’ ์บ์‹œ ์ฝœ๋“œ โ†’ ๋ฏธ์Šค ๋ˆ„์  โ†’ ํ”„๋กœ์„ธ์Šค ์ „ํ™˜์ด ์Šค๋ ˆ๋“œ ์ „ํ™˜๋ณด๋‹ค ๋А๋ฆผ. ๋‹ค์„ฏ ์งˆ๋ฌธ์ด ์ด ํ•œ ์ค„์„ ๋‹ค์„ฏ ๊ฐ๋„๋กœ ํŒŒ๊ณ ๋“  ๊ฒƒ.

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

ยฉ GoldBoll. ์ผ๋ถ€ ๊ถŒ๋ฆฌ ๋ณด์œ 

Powered by Jekyll with Chirpy theme

์ธ๊ธฐ ํƒœ๊ทธ