Background : Computer Architecture

곽무경·2022년 6월 28일
0

System Hacking

목록 보기
1/27

컴퓨터 구조

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

  • 컴퓨터의 기능 구조에 대한 설계 : 컴퓨터에 필요한 기능을 설계(폰 노이만 구조, 하버드 구조 등)
  • 명령어 집합 구조 : CPU가 처리해야 할 명령어 설계(x86-64 등)
  • 마이크로 아키텍처 : CPU의 하드웨어적 설계
  • 기타 하드웨어 및 컴퓨팅 방법에 대한 설계

폰 노이만 구조

세 가지의 핵심 기능(연산, 제어, 저장)

  • 연산 - CPU(중앙처리장치) : 프로그램의 연산을 처리하고 시스템을 관리
    • ALU(산술논리장치) : 산술/논리 연산 처리
    • Control Unit(제어장치) : CPU 제어
    • Register(레지스터) : 데이터 저장
  • 기억장치 : 컴퓨터가 동작하는데 필요한 여러 데이터를 저장
    • 주기억장치 : 프로그램 실행 과정에서 필요한 데이터를 임시 저장(RAM 등)
    • 보조기억장치 : 장기간 보관이 필요한 데이터를 저장(HDD, SSD 등)
  • 버스 : 부품 ↔ 부품 또는 컴퓨터 ↔ 컴퓨터에 신호를 전송
    • 데이터/주소/제어 버스
    • 랜선, 데이터 전송 소프트웨어, 프로토콜 등

CPU에 레지스터가 필요한 이유

  • CPU는 빠른 속도의 연산 처리를 위해 빠른 속도의 데이터 교환이 필요하다.
  • CPU의 연산속도가 기억장치와의 데이터 교환속도보다 압도적으로 빠르므로 병목현상이 발생한다.
    • 병목 현상 : 시스템의 전체 성능이나 용량이 하나 혹은 소수 개의 구성 요소나 자원에 의해 제한받는 현상
  • 따라서 CPU는 레지스터와 캐시라는 저장장치를 가지고 있다.

명령어 집합 구조

CPU가 해석하는 명령어의 집합(IA-32/16, x86-64, MIPS, AVR 등)

  • Intel의 x86-84 아키텍처 : 고성능, 높은 전력소모, 높은 발열
    • n비트 아키텍처 : CPU가 한 번에 처리할 수 있는 데이터의 크기가 n-bit(WORD)
  • ARM, MIPS, AVR : 전력소모와 발열이 적다.
  • ARM은 스마트폰에 탑재

레지스터

CPU가 데이터를 빠르게 저장하고 사용할 때 이용하는 저장장치

  • 범용 레지스터 : 주된 용도는 있으나, 다양한 용도로 사용 가능한 레지스터
    • rax(accumulator) : 함수의 반환값
    • rbx(base) : 주된 용도 없음
    • rcx(counter) : 반복문의 반복 횟수, 각종 연산의 시행 횟수
    • rdx(data) : 주된 용도 없음
    • rsi(source index) : 데이터를 옮길 때 원본 포인터
    • rdi(destination index) : 데이터를 옮길 때 목적지 포인터
    • rsp(stack pointer) : 사용중인 스택의 위치 포인터
    • rbp(stack base pointer) : 스택의 바닥 포인터
  • 세그먼트 레지스터
    • cs, ds, ss : 코드, 데이터, 스택 메모리 영역을 가리킬 때 사용
    • es, fs, gs : 운영체제 별로 용도를 결정
  • 명령어 포인터 레지스터
    • rip : CPU가 어느 부분의 코드를 실행할 지 가리키는 포인터
  • 플래그 레지스터 : 프로세서의 현재 상태를 저장하고 있는 레지스터
    • CF(Carry) : 부호 없는 수의 연산에서 연산 결과가 비트 범위를 넘을 경우
    • ZF(Zero) : 연산 결과가 0일 경우
    • SF(Sign) : 연산 결과가 음수일 경우
    • OF(Overflow) : 부호 있는 수의 연산에서 연산 결과가 비트 범위를 넘을 경우

레지스터의 호환

  • eax, ebx, ecx, edx, esi, edi, esp, ebp
    • rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp의 하위 32비트(16진수 8자리)
  • ax, bx, cx, dx, si, di, sp, bp
    • rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp의 하위 16비트(16진수 4자리)
  • ah/al, bh/bl, ch/cl, dh/dl
    • ax, bx, cx, dx의 상위/하위 8비트(16진수 2자리)

0개의 댓글