๐Ÿ’ปโ”‚IT_Study/๐Ÿ“Ÿโ”‚System_Study

CPU ๋ ˆ์ง€์Šคํ„ฐ

Jastes 2022. 4. 13. 14:10

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)

 

 



ํŠน์ˆ˜ ๋ชฉ์  ๋ ˆ์ง€์Šคํ„ฐ


01234

 

Computer Architecture

1. ์ปดํ“จํ„ฐ ๊ตฌ์กฐ(Computer Architecture) ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ๋Š” PC์„ค๊ณ„๋ฅผ ์—ฌ๋Ÿฌ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ณ , ์ด๋“ค์„ ์กฐ๋ฆฝํ•ด์„œ ์ปดํ“จํ„ฐ๊ฐ€ ์™„์„ฑํ•œ ๊ฒƒ์ด ์ปดํ“จํ„ฐ ๊ตฌ์กฐ! ๋”๋ณด๊ธฐ ๐Ÿ“œ๊ฐœ์š”๐Ÿ“œ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ(Computer Architecture)

dystopia050119.tistory.com

 

์œ„ ๋งํฌ์—์„œ๋„ ๋ถ€์กฑํ•˜์‹œ๋‹ค๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ๋ผ๋„(๋ถ€์กฑํ• ๋ฆฌ๊ฐ€ ์žˆ์„๊นŒ์š”?)

 

ch02 - ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๊ตฌ์กฐ

1. ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฐฉ์‹ 2. ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒ์„ฑ 3. ํ”„๋กœ์„ธ์Šค 4. ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ตฌ์„ฑ๊ณผ ์—ญํ•  1. ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฐฉ์‹  1.1 ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋‹จ์œ„  - ์ปดํ“จํ„ฐ์—์„  ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„. ๋ฐ”์ดํŠธ๋Š” ์ปดํ“จ

choimungu.tistory.com


๋ช…๋ น์–ด ์‚ฌ์ดํด

๋ช…๋ น์–ด ์ธ์ถœ, ๋ช…๋ น์–ด ํ•ด๋…, ๋ฐ์ดํ„ฐ ์ธ์ถœ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ์ €์žฅ

์ธ์ถœ ์‚ฌ์ดํด : CPU๊ฐ€ ์ฃผ๊ธฐ์–ต์žฅ์น˜(RAM)์— ๋ช…๋ น์–ด๋ฅผ ์ฝ๋Š” ๋‹จ๊ณ„(โ‰’ I/O ์žฅ์น˜)
์‹คํ–‰ ์‚ฌ์ดํด : ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„(๋ช…๋ น์–ด ํ•ด์„ + ๋ช…๋ น์–ด ์ธ์ถœ ๋ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ)

๊ทธ๋Ÿผ ์ด์ œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ๋ช…๋ น์–ด ์‚ฌ์ดํด์— ๋Œ€ํ•˜์—ฌ ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊นŒ์š”

#include <stdio.h>
 
int main(int* argc, char** argv[]){
    int D2, D3, sum;
    sum = D2 + D3;
 
    printf("%d", sum);
}

01

์ธ์ถœ ์‚ฌ์ดํด
PC(์‹คํ–‰์–ด ์ฃผ์†Œ) → MAR(์ฃผ์†Œ)๋กœ ๋„ฃ์–ด์„œ ์ฃผ๊ธฐ์–ต์žฅ์น˜(RAM)์— ์ ์žฌ → MBR(๋ฒ„ํผ)์— ์ €์žฅ → IR(์‹คํ–‰)
์‹คํ–‰ ์‚ฌ์ดํด
IR(ํ˜„์žฌ ์‹คํ–‰๋ช…๋ น์–ด) → MAR(์ฃผ์†Œ)๋กœ ๋„ฃ์–ด ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ ์žฌ ํ›„ MBR(๋ฒ„ํผ)์— ์ ์ œ ํ›„ ๊ณ„์‚ฐ(ALU → AC)

 

012345

๋” ์ž์„ธํžˆ๋Š” ์—ฌ๊ธฐ๋กœ.. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํŒŒ์ผ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •

 

Background: Binary

Program ์—ฐ์‚ฐ์žฅ์น˜๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์ž‘์„ ์ •์˜ํ•œ ์ผ์ข…์˜ ๋ฌธ์„œ! ์—ฐ์‚ฐ ์žฅ์น˜์— ์ „๋‹ฌํ•˜๋ฉด, CPU๋Š” ์ ํ˜€์žˆ๋Š” ๋ช…๋ น๋“ค์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์˜๋„ํ•œ ๋™์ž‘ ์ˆ˜ํ–‰ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ํ•ด์„ํ•˜์—ฌ ๋ช…๋ น์–ด

dystopia050119.tistory.com

 

๋ฉ”๋ชจ๋ฆฌ ์ ์žฌ ๊ธฐ์ค€(๋ฆฌ๋ˆ…์Šค)

๋ณด์•ˆ์ชฝ์— ๊ฐ€๊น๋‹ค๊ณ  ํ•ด์•ผํ•˜๋‚˜์š”? ๊ตณ์ด ๋ชฐ๋ผ๋„ ๋˜๊ธดํ•ด์š”

 

Linux Memory Layout

1. ๋ฆฌ๋ˆ…์Šค ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ(Memory Layout) ํ”„๋กœ์„ธ์Šค ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ ๊ตฌ์—ญ์ด ์–ด๋–ค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ! ๋”๋ณด๊ธฐ ๐Ÿ“œ๊ฐœ์š”๐Ÿ“œ ์„ธ๊ทธ๋จผํŠธ๋ž€ ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ BSS ์„ธ๊ทธ๋จผํŠธ

dystopia050119.tistory.com


์ฐธ๊ณ  ์ž๋ฃŒ

 

CPU ๋ ˆ์ง€์Šคํ„ฐ (Register) ์˜ ์ดํ•ด ๋ฐ ์ข…๋ฅ˜

CPU ๋ ˆ์ง€์Šคํ„ฐ : ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜(CPU) ๋‚ด์— ์œ„์น˜ํ•œ ๊ธฐ์–ต์žฅ์น˜๋กœ ๋งŽ์€ ์ˆ˜์˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ CPU๋‚ด์— ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ˆ˜ ๋ชฉ์ ์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋“ค๊ณผ ๋ช‡๋ช‡ ์ผ๋ฐ˜ ๋ชฉ์ ์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋งŒ ์กด์žฌํ•œ๋‹ค. ๋Œ€ํ‘œ

technote.kr

๋”๋ณด๊ธฐ

์ฐธ๊ณ  ์ด๋ฏธ์ง€