๐Ÿ’ฟ KAIST:PINTOS | Concept | Register

์ด์ˆœ๊ฐ„ยท2025๋…„ 5์›” 15์ผ

KAIST:PINTOS

๋ชฉ๋ก ๋ณด๊ธฐ
7/23

๐Ÿ” Register๋ž€?

๐Ÿ“Œ ์ •์˜

๋ ˆ์ง€์Šคํ„ฐ(Register)๋Š” CPU ๋‚ด๋ถ€์— ๋‚ด์žฅ๋œ ์ดˆ๊ณ ์† ์ €์žฅ ๊ณต๊ฐ„์ด๋‹ค.
๋ชจ๋“  ๊ณ„์‚ฐ๊ณผ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ์ถœ๋ฐœ์ ์ด์ž ์ข…์ฐฉ์ ์œผ๋กœ, ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ
๊ฑฐ์˜ ๋ชจ๋“  ์—ฐ์‚ฐ์€ Register๋ฅผ ๊ฑฐ์นœ๋‹ค.

CPU๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋“  ๋ฐ˜๋“œ์‹œ ๋ ˆ์ง€์Šคํ„ฐ์— ๋จผ์ € ์˜ฌ๋ ค์•ผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿง  ์™œ ์ค‘์š”ํ•œ๊ฐ€?

  • ์†๋„: Register๋Š” CPU ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋ฏ€๋กœ, ๊ฐ€์žฅ ๋น ๋ฅธ ์ ‘๊ทผ ์†๋„๋ฅผ ์ž๋ž‘ํ•œ๋‹ค.
  • ์—ฐ์‚ฐ ์ค‘์‹ฌ: ์‚ฐ์ˆ , ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ๋“ฑ์€ ๋ฐ˜๋“œ์‹œ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ˆ˜ํ–‰๋œ๋‹ค.
  • ๋ฌธ๋งฅ ์ „ํ™˜: PintOS์™€ ๊ฐ™์€ OS์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์ „ํ™˜ํ•  ๋•Œ, ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๋ณต์›ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿงฉ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋Š” Register

๐Ÿ“– ๋น„์œ 

๋ ˆ์ง€์Šคํ„ฐ๋Š” ์…ฐํ”„๊ฐ€ ์†์— ๋“ค๊ณ  ์žˆ๋Š” ์นผ, ๋„๋งˆ
(์ฆ‰๊ฐ ์—ฐ์‚ฐ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„)

๋ฐ˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋Š” ์„ ๋ฐ˜ ์œ„์— ์žˆ๋Š” ์‹์žฌ๋ฃŒ ์ฐฝ๊ณ ์ฒ˜๋Ÿผ ๋А๋ฆฌ์ง€๋งŒ ๋„“์€ ์ €์žฅ ๊ณต๊ฐ„์ด๋‹ค.
๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด CPU๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ๋„ ํ•  ์ˆ˜ ์—†๋‹ค.


โš™๏ธ ์ฃผ์š” ๋ ˆ์ง€์Šคํ„ฐ ๋ชฉ๋ก (x86_64 ๊ธฐ์ค€)

์ด๋ฆ„์„ค๋ช…
rax์‚ฐ์ˆ  ์—ฐ์‚ฐ ๊ฒฐ๊ณผ, ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’ ์ €์žฅ
rbx์ผ๋ฐ˜ ์ €์žฅ์šฉ (๋ณด์กด๋˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ)
rcx๋ฃจํ”„, ๋ฐ˜๋ณต ์นด์šดํ„ฐ
rdx๋ณด์กฐ ์—ฐ์‚ฐ์šฉ
rsi, rdiํ•จ์ˆ˜ ์ธ์ž ์ „๋‹ฌ
rsp์Šคํƒ ํฌ์ธํ„ฐ (Stack Pointer)
rbpํ”„๋ ˆ์ž„ ํฌ์ธํ„ฐ (Base Pointer)
rip๋ช…๋ น์–ด ํฌ์ธํ„ฐ (Instruction Pointer)

๐Ÿ’ก ํŠนํžˆ rsp, rbp, rip, rax๋Š” OS ๋ ˆ๋ฒจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ•ต์‹ฌ ์—ญํ• ์„ ํ•œ๋‹ค.


๐Ÿ’พ PintOS์—์„œ์˜ ํ™œ์šฉ

โœ… ์ธํ„ฐ๋ŸฝํŠธ ํ”„๋ ˆ์ž„ (struct intr_frame)

  • ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์‹œ, CPU๋Š” ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ intr_frame ๊ตฌ์กฐ์ฒด์— ์ €์žฅ
  • ๋ณต๊ท€ ์‹œ ์ด ๊ฐ’์„ ๋‹ค์‹œ ๋ณต์›ํ•˜์—ฌ ์ •ํ™•ํžˆ ์ด์–ด์„œ ์‹คํ–‰ํ•จ

โœ… ๋ฌธ๋งฅ ์ „ํ™˜

  • ์Šค๋ ˆ๋“œ๋ฅผ ์ „ํ™˜ํ•  ๋•Œ rsp, rbp, rip ๋“ฑ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ์ €์žฅํ•ด ๋‘๊ณ ,
    ๋‹ค์‹œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์˜ ๊ฐ’์œผ๋กœ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๊ต์ฒดํ•œ๋‹ค.

๐Ÿšจ Register๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋ฉด, ๋ฌธ๋งฅ ์ „ํ™˜๊ณผ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋‹จ์ˆœํ•œ '์ €์žฅ๊ณผ ๋ณต์›' ์ด์ƒ์ด๋ผ๋Š” ๊ฑธ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.


โฑ๏ธ ์†๋„ ์ธก๋ฉด์—์„œ ์–ด๋””์— ์œ„์น˜ํ• ๊นŒ?

์ €์žฅ์†Œ์†๋„ (๋Œ€๋žต์ ์ธ cycle)
Registerโฑ๏ธ 1 cycle
L1 Cache3~4 cycle
L2 Cache10~15 cycle
RAM (Memory)100~300 cycle
SSD์ˆ˜๋งŒ~์ˆ˜์‹ญ๋งŒ cycle

โ†’ Register๋Š” ๋‹จ์—ฐ์ฝ” ๊ฐ€์žฅ ๋น ๋ฅธ ๊ธฐ์–ต์žฅ์น˜์ด๋‹ค.


๐Ÿ“˜ ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ

  • ๋ ˆ์ง€์Šคํ„ฐ๋Š” CPU ๋‚ด๋ถ€์˜ ์—ฐ์‚ฐ ์ „์šฉ ์ดˆ๊ณ ์† ์ž„์‹œ ๊ธฐ์–ต ๊ณต๊ฐ„์ด๋‹ค.
  • ๋ชจ๋“  ์‚ฐ์ˆ /๋…ผ๋ฆฌ ์—ฐ์‚ฐ์€ ๋ฐ˜๋“œ์‹œ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๊ฑฐ์นœ๋‹ค.
  • PintOS์—์„œ๋Š” ์Šค๋ ˆ๋“œ ์ „ํ™˜, ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋“ฑ ์‹œ์Šคํ…œ ํ•ต์‹ฌ ๋กœ์ง์—์„œ
    ๋ ˆ์ง€์Šคํ„ฐ ์ €์žฅ/๋ณต์›์ด ํ•„์ˆ˜๋กœ ๋“ฑ์žฅํ•œ๋‹ค.
profile
์„œํˆด์ง€์–ธ์ • ๋Š˜ ํ–‰๋™์ด ๋จผ์ €์ด๊ธฐ๋ฅผ

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