카테고리 없음

[DreamHack] Computer Architecture 개념 정리

qkrdldks04 2025. 3. 27. 13:37

컴퓨터 구조(Computer Architecture) 

컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법

 

 

> 폰 노이만 구조

 

중앙처리장치(Central Processing Unit, CPU)

프로그램 연산을 처리하고 시스템을 관리함 프로세스 코드를 불러오고 실행하고 결과를 저장하는 모든 과정이 일어남, 산술논리장치(ALU), 제어장치 (Control Unit) , 데이터를 저장하는 레지스터 (Register) 로 구성됨

기억장치(memory)

주기억장치: 프로그램 실행과정에 필요한 데이터 임시 저장으로 사용 ex) 램 ( RAM )

보조기억장치: 운영 체제, 프로그램 등의 데이터를 장기 보관할 때 사용 ex) 하드 드라이브( HDD ), ( SSD )

버스(bus)

부품과 부품 사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로

데이터가 이동하는 데이터 버스(Data Bus), 주소를 지정하는 주소 버스(Address Bus), 읽기/쓰기를 제어하는 제어 버스(Control Bus)

 

💡 기억 장치가 있는데 CPU에 레지스터가 있는 이유

- CPU 연산 속도가 기억장치와 데이터 교환 속도보다 압도적으로 빠르기에 메모리만 사용하면 병목 현상이 발생함 따라서 교환 속도 단축을 위해 레지스터와 캐시라는 저장 장치를 내부에 가지고 있음!

 

 

> 명령어 집합 구조(Instruction Set Architecture, ISA)

CPU가 해석하는 명령어의 집합으로 기계어로 이루어진 프로그램을 실행하면 이 명령어들을 CPU가 읽고 처리함

ex) IA-32, x86-64(x64), MIPS, AVR (작은 임베디드 전용)

 

> x86-64 아키텍처

64와 32는 CPU가 한 번에 처리할 수 있는 데이터 크기=WORD 

 

범용 레지스터

주 용도는 있으나, 그 외의 용도로도 자유롭게 사용할 수 있는 레지스터로 8바이트 크기

rax (accumulator register)
함수의 반환 값
rbx (base register)
x64에서는 주된 용도 없음
rcx (counter register)
반복문의 반복 횟수, 각종 연산의 시행 횟수
rdx (data register)
x64에서는 주된 용도 없음
rsi (source index)
데이터를 옮길 때 원본을 가리키는 포인터
rdi (destination index)
데이터를 옮길 때 목적지를 가리키는 포인터
rsp (stack pointer)
사용중인 스택의 위치를 가리키는 포인터
rbp (stack base pointer)
스택의 바닥을 가리키는 포인터

 

세그먼트 레지스터

과거에는 메모리 세그멘테이션이나, 가용 메모리 공간의 확장을 위해 사용됐으나, 현재는 주로 메모리 보호를 위해 사용되는 레지스터, x64에는 cs, ss, ds, es, fs, gs가 존재하며 16비트 크기

 

명령어 포인터 레지스터

CPU가 실행해야할 코드를 가리키는 레지스터. x64에서는 rip으로 8바이트 크기

 

플래그 레지스터

CPU의 상태를 저장하는 레지스터로 크기 64비트지만 실제로는 아래 그림과 같이 20여개 비트만 사용함 사용예) a=3, b=3 일때 a-b 는 음수-> SF 설정 -> CPU는 SF를 통해 a가 b보다 작음을 알 수 있음

 

 

> 레지스터 호환