2024-08-20 02:55:14

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)부호 있는 수의 연산 결과가 비트 범위를 넘을 경우