COMPUTER ARCHITECTURE
- 컴퓨터 구조
- 명령어 집합 구조
- 범용 레지스터
- 세그먼트 레지스터
- 플래그 레지스터
- 명령어 포인터 레지스터
- 컴퓨터 구조
- 폰 노이만 구조
- 중앙처리장치(central processing unit):
산술논리장치(Arithmetic Logic Unit): 산술, 논리연산
제어장치(Control Unit): CPU 제어
레지스터(Register): CPU에 필요한 데이터 저장 - 기억장치(memory)
램(Random-Access Memory): 주기억장치
보조기억장치: HDD, SDD
레지스터, 캐시: 데이터 병목현상 방지 저장장치. 보조기억장치 아님 - 버스(bus):
data bus
address bus
control bus
the software that carries data -> also called bus
- 컴퓨터 아키텍쳐란?
- 시스템의 설계와 구성 요소를 정의하는 구조, 프로세서나 메모리, 입출력 장치 간 상호작용 등등이 포함된다.
종류
- X86(CISC)
인텔의 32비트 아키텍쳐. 주로 데스크톱, 노트북, 서버에서 많이 사용되었으나, 현재는 64비트가 주류
- x86_64(CISC)
x86의 확장판으로 볼 수 있는 64비트 아키텍쳐. 현재는 이게 많이 사용된다.
- ARM(RISC)
인텔의 두 아키텍쳐보다 저전력, 단순한 명령어 집합. 에너지 효율성이 높다.
- MIPS(RISC)
임베디드 시스템에 많이 사용된다.
- RISC-V(RISC)
마찬가지로 임베디드나 교육적 목적에 주로 사용.
- 명령어 집합 구조(Instruction Set Architecture)
- IA-32, x86-64(x64), MIPS, AVR
- x86-64 architecture
WORD:32 비트, 64비트...:
CPU가 이해할 수 있는 데이터의 단위. 32비트 아키텍처-> ALU가 32비트까지 계산 가능. 설계상 CPU는 32비트까지의 데이터 처리 가능. 워드가 크면 가상메모리가 크다. 64비트 아키텍처에서 메모리 자원이 부족해서 소프트웨어의 성능이 떨어지는 경우는 거의 발생하지 않음.
레지스터: CPU 내부의 저장장치
1. 범용 레지스터
주 용도는 있으나 그 외에도 자유롭게 사용 가능
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) | 스택의 바닥을 가리키는 포인터 | |
2. 세그먼트 레지스터
과거에는 메모리 세그먼테이션 or 가용 메모리 확장
현재는 주로 메모리 보호를 위해 사용
cs, ss, ds, es, fs, gs: 각각 16비트의 레지스터
코드, 스택 메모리, 데이터, 나머지는 운영체제별 용도
3. 명령어 포인터 레지스터
CPU가 어느 부분의 코드를 실행할지 가리킴.
기계어로 작성.
x64아키텍처에서 명령어 레지스터: rip, 8바이트
4. 플래그 레지스터
CPU의 현재 상태 표현
CF(Carry Flag) | 부호 없는 수의 연산 결과가 비트의 범위를 넘을 경우 |
ZF(Zero Flag) | 연산의 결과가 0일 경우 |
SF(Sign Flag) | 연산의 결과가 음수일 경우 |
OF(Overflow Flag) | 부호 있는 수의 연산 결과가 비트 범위를 넘을 경우 |