CPU ๋ ์ง์คํฐ (Register)
๐ก CPU๋ด์ ์์นํ ๊ธฐ์ต์ฅ์น๋ก ๋ง์ ์์ ๋ ์ง์คํฐ๋ฅผ CPU๋ด์ ํฌํจ์ํค๋ ๊ฒ์
์ด๋ ต๊ธฐ ๋๋ฌธ์ ํน์ ๋ชฉ์ ์ฉ ๋ ์ง์คํฐ๋ค๊ณผ ๋ช๋ช ์ผ๋ฐ ๋ชฉ์ ์ฉ ๋ ์ง์คํฐ๋ง ์กด์ฌํ๋ค.
๋ํ์ ์ธ ๋ ์ง์คํฐ | |
PC (Program Counter) | ๋ค์ ์ธ์ถ(Fetch) ๋ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ ์ง์คํฐ |
AC (Accumulator) | ์ฐ์ฐ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์ ์ฅํ๋ ๋ ์ง์คํฐ |
IR (Instruction Register) | ๊ฐ์ฅ ์ต๊ทผ์ ์ธ์ถ๋ ๋ช ๋ น์ด(ํ์ฌ ์คํ ์ค์ธ ๋ช ๋ น์ด)๊ฐ ์ ์ฅ๋์ด ์๋ ๋ ์ง์คํฐ |
SR (Status Register) | ํ์ฌ CPU ์ ์ํ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ ์ง์คํฐ |
MAR (Memory Address Register) | PC์ ์ ์ฅ๋ ๋ช ๋ น์ด ์ฃผ์๊ฐ ์ฌ์ฉ๋๊ธฐ ์ ์ ์ผ์์ ์ผ๋ก ์ ์ฅ๋๋ ์ฃผ์ ๋ ์ง์คํฐ |
MBR (Memory Buffer Register) | ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋ ๋ฐ์ดํฐ ํน์ ์ฝํ์ง ๋ฐ์ดํฐ๊ฐ ์ผ์์ ์ผ๋ก ์ ์ฅ๋๋ ๋ฒํผ ๋ ์ง์คํฐ |
์ผ๋ฐ ๋ชฉ์ ์ฉ ๋ ์ง์คํฐ
์ ์ด ๋ฒ์ค : IR / SR(โrip)
์ฃผ์ ๋ฒ์ค : PC(r1..14 or rbx) / MAR(โ r1..14)
๋ฐ์ดํฐ ๋ฒ์ค : AC(โ rax) / MBR(โ rsp, rbp)
ํน์ ๋ชฉ์ ๋ ์ง์คํฐ
์ ๋งํฌ์์๋ ๋ถ์กฑํ์๋ค๋ฉด ๊ฐ๋จํ๊ฒ๋ผ๋(๋ถ์กฑํ ๋ฆฌ๊ฐ ์์๊น์?)
๋ช ๋ น์ด ์ฌ์ดํด
๋ช ๋ น์ด ์ธ์ถ, ๋ช ๋ น์ด ํด๋ , ๋ฐ์ดํฐ ์ธ์ถ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ ์ ์ฅ
์ธ์ถ ์ฌ์ดํด : CPU๊ฐ ์ฃผ๊ธฐ์ต์ฅ์น(RAM)์ ๋ช ๋ น์ด๋ฅผ ์ฝ๋ ๋จ๊ณ(โ I/O ์ฅ์น)
์คํ ์ฌ์ดํด : ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋จ๊ณ(๋ช ๋ น์ด ํด์ + ๋ช ๋ น์ด ์ธ์ถ ๋ฐ ๋ฐ์ดํฐ ์ ์ฅ)
๊ทธ๋ผ ์ด์ ์๋ ์ฝ๋๋ฅผ ํด์ํ๊ณ ๋ช ๋ น์ด ์ฌ์ดํด์ ๋ํ์ฌ ์์ธํ ์์๋ณผ๊น์
#include <stdio.h>
int main(int* argc, char** argv[]){
int D2, D3, sum;
sum = D2 + D3;
printf("%d", sum);
}
์ธ์ถ ์ฌ์ดํด
PC(์คํ์ด ์ฃผ์) → MAR(์ฃผ์)๋ก ๋ฃ์ด์ ์ฃผ๊ธฐ์ต์ฅ์น(RAM)์ ์ ์ฌ → MBR(๋ฒํผ)์ ์ ์ฅ → IR(์คํ)
์คํ ์ฌ์ดํด
IR(ํ์ฌ ์คํ๋ช ๋ น์ด) → MAR(์ฃผ์)๋ก ๋ฃ์ด ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฌ ํ MBR(๋ฒํผ)์ ์ ์ ํ ๊ณ์ฐ(ALU → AC)
๋ ์์ธํ๋ ์ฌ๊ธฐ๋ก.. ํ๋ก๊ทธ๋จ์ ์คํํ์ผ๋ก ๋ฐ๊พธ๋ ๊ณผ์
๋ฉ๋ชจ๋ฆฌ ์ ์ฌ ๊ธฐ์ค(๋ฆฌ๋ ์ค)
๋ณด์์ชฝ์ ๊ฐ๊น๋ค๊ณ ํด์ผํ๋์? ๊ตณ์ด ๋ชฐ๋ผ๋ ๋๊ธดํด์
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐ปโIT_Study > ๐โSystem_Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Docker Conference Meterial (2) | 2023.07.16 |
---|---|
Docker Conference Meterial (1) | 2023.07.13 |
๋ฆฌ๋ ์ค ํฌํธ ์ ๋ฆฌ (0) | 2022.05.24 |
์ด์์ฒด์ ๋ฐ์ ๊ณผ์ (0) | 2022.04.12 |
์ด์์ฒด์ (OS)๋? (0) | 2022.04.11 |