๋ ์ง์คํฐ(Register)๋ CPU ๋ด๋ถ์ ๋ด์ฅ๋ ์ด๊ณ ์ ์ ์ฅ ๊ณต๊ฐ์ด๋ค.
๋ชจ๋ ๊ณ์ฐ๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ถ๋ฐ์ ์ด์ ์ข
์ฐฉ์ ์ผ๋ก, ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋
๊ฑฐ์ ๋ชจ๋ ์ฐ์ฐ์ Register๋ฅผ ๊ฑฐ์น๋ค.
CPU๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ๋์ ๋ ์ง์คํฐ์ ๋จผ์ ์ฌ๋ ค์ผ ์ฒ๋ฆฌํ ์ ์๋ค.
๋ ์ง์คํฐ๋ ์ ฐํ๊ฐ ์์ ๋ค๊ณ ์๋ ์นผ, ๋๋ง
(์ฆ๊ฐ ์ฐ์ฐ ๊ฐ๋ฅํ ๊ณต๊ฐ)
๋ฐ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ ์ ๋ฐ ์์ ์๋ ์์ฌ๋ฃ ์ฐฝ๊ณ ์ฒ๋ผ ๋๋ฆฌ์ง๋ง ๋์ ์ ์ฅ ๊ณต๊ฐ์ด๋ค.
๋ ์ง์คํฐ๊ฐ ์๋ค๋ฉด CPU๋ ๋จ ํ๋์ ์ฐ์ฐ๋ ํ ์ ์๋ค.
| ์ด๋ฆ | ์ค๋ช |
|---|---|
rax | ์ฐ์ ์ฐ์ฐ ๊ฒฐ๊ณผ, ํจ์ ๋ฐํ๊ฐ ์ ์ฅ |
rbx | ์ผ๋ฐ ์ ์ฅ์ฉ (๋ณด์กด๋๋ ๋ ์ง์คํฐ) |
rcx | ๋ฃจํ, ๋ฐ๋ณต ์นด์ดํฐ |
rdx | ๋ณด์กฐ ์ฐ์ฐ์ฉ |
rsi, rdi | ํจ์ ์ธ์ ์ ๋ฌ |
rsp | ์คํ ํฌ์ธํฐ (Stack Pointer) |
rbp | ํ๋ ์ ํฌ์ธํฐ (Base Pointer) |
rip | ๋ช ๋ น์ด ํฌ์ธํฐ (Instruction Pointer) |
๐ก ํนํ
rsp,rbp,rip,rax๋ OS ๋ ๋ฒจ ํ๋ก๊ทธ๋๋ฐ์์ ํต์ฌ ์ญํ ์ ํ๋ค.
struct intr_frame)rsp, rbp, rip ๋ฑ ๋ ์ง์คํฐ ๊ฐ์ ์ ์ฅํด ๋๊ณ ,๐จ Register๊ฐ ์ด๋ค ์ญํ ์ ํ๋์ง ์ดํดํ์ง ๋ชปํ๋ฉด, ๋ฌธ๋งฅ ์ ํ๊ณผ ์ธํฐ๋ฝํธ๊ฐ ๋จ์ํ '์ ์ฅ๊ณผ ๋ณต์' ์ด์์ด๋ผ๋ ๊ฑธ ํ์ ํ๊ธฐ ์ด๋ ต๋ค.
| ์ ์ฅ์ | ์๋ (๋๋ต์ ์ธ cycle) |
|---|---|
| Register | โฑ๏ธ 1 cycle |
| L1 Cache | 3~4 cycle |
| L2 Cache | 10~15 cycle |
| RAM (Memory) | 100~300 cycle |
| SSD | ์๋ง~์์ญ๋ง cycle |
โ Register๋ ๋จ์ฐ์ฝ ๊ฐ์ฅ ๋น ๋ฅธ ๊ธฐ์ต์ฅ์น์ด๋ค.