[System Hacking][DreamHack][Stage2] Background: Computer Architecture

marceline·2023년 3월 29일
0

[System Hacking]

목록 보기
6/17

1. Introduce

랜카드 : 네트워크 통신

사운드 카드 : 소리 데이터 처리

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

전체적인 컴퓨터 구조 중에서 특히 CPU 가 사용하는 명령어와 관련된 설계
Intel x86-64 architecture 가 가장 널리 사용

개요

  1. Computer Architecture ; 컴퓨터 구조
  2. Instruction Set Architecture, ISA) ; 명령어 집합 구조
  3. General Register ; 범용 레지스터
  4. Segment Register ; 세그먼트 레지스터
  5. Flag Register ; 플래그 레지스터
  6. Instruction Pointer Register, IP) ; 명령어 포인터 레지스터

2. Computer Architecture and ISA

Computer Architecture

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

기능 구조에 대한 설계

컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고, 설계하는 분야
-> 폰 노이만, 하버드, 수정된 하버드 구조가 있다

CPU 의 명령어에 대한 설계 : ISA

CPU 가 처리해야하는 명령어를 설계하는 분야
-> ARM, MIPS, AVR, Intel x86/ x86-64

CPU 의 하드웨어적 설계 : Micro Architecture

정의된 명령어 집합을 효율적으로 처리할 수 있도록, CPU 의 회로설계

폰 노이만 구조

Central Processing Unit, CPU ; 중앙처리장치

프로그램의 연산을 처리하고 시스템을 관리하는 컴퓨터의 두뇌
프로세스의 코드를 불러오고, 실행하고, 결과를 저장하는 일련의 과정이 일어나는 곳

  • ALU (Arithmetic Logic Unit)
    산술논리장치
  • Control Unit
    제어장치
  • Register
    CPU 에 필요한 데이터를 저장

memory ; 기억장치

  • 주기억장치
    프로그램 실행 과정에서 필요한 데이터들을 임시로 저장하기 위해서 사용
    RAM (Random Access Memory)
  • 보조기억장치
    데이터를 장기간 보관 (운영체제, 프로그램 등)
    HDD (Hard Dist Drive)
    SSD (Solid State Drive)

bus ; 버스

컴퓨터 부품과 부품사이 or 컴퓨터와 컴퓨터 사이 신호전송 통로
  • Data Bus
    데이터 이동
  • Adress Bus
    주소지정
  • Control Bus
    읽기 / 쓰기 제어
  • 랜선/ 데이터 전송 소프트웨어/ 프로토콜 ...

register 의 존재 이유

CPU 의 연산속도 >>> 기억장치와의 데이터 교환속도
=> 병목현상 발생
즉, 교환속도를 획기적으로 단축하기 위해 "register", "Cache" 라는 저장장치가 CPU 내에 있는것!

ISA (Instruction Set Architecture)

CPU 가 해석하는 명령어의 집합

ISA 의 다양성

모든 컴퓨터가 동일한 수준의 연산 능력을 요구하지 않으며, 컴퓨팅 환경도 다양하기 때문

3. x86-64 Architecture

x64 Architecture == Intel 의 64bit CPU Architecture

Intel 의 32bit CPU Architecture 인 IA-32 를 64bit 환경에서 사용할 수 있도록 확장
대다수의 개인용 컴퓨터들은 Intel 의 x64 CPU 를 사용

n bit Architecture

n: CPU 가 한번에 처리할 수 있는 데이터의 크기
(n == WORD)

WORD : CPU 가 이해할 수 있는 데이터의 단위

WORD 가 크면 CPU 가 제공할 수 있는 가상메모리의 크기도 크기 때문에 소프트웨어의 최고 성능을 낼 수 있다.

x86-64 Architecture: Register

CPU 가 데이터를 빠르게 저장하고 사용할 때 사용하는 저장소
산술 연산에 필요한 데이터를 저장하거나 주소를 저장하고 참고하는 등의 용도로 사용

General Register ; 범용 레지스터

  • rax (accumulator register)
    함수의 반환값
  • rbx (base register)
    .
  • rcx (counter register)
    반복문의 반복 횟수, 각종 연산의 시행 횟수
  • rdx (data register)
    .
  • rsi (source index)
    데이터를 옮길 때 원본을 가리키는 포인터
  • rdi (destination index)
    데이터를 옮길 때 목적지를 가리키는 포인터

Segment Register ; 세그먼트 레지스터

6가지 레지스터 존재 / 크기는 각 16bit

  • cs
    code memory 영역 가리킬 때
  • ss
    stack memory 영역 가리킬 때
  • ds
    data memory 영역 가리킬 때
  • es
  • fs
  • gs
    es, fs, gs 는 범용적인 용도

IP (Instruction Pointer Register) ; 명령어 포인터 레지스터

CPU 가 어느 부분의 코드를 실행할 지 가리키기 위함

x64 Architecture 의 명령어 레지스터는 rip (크기 : 8byte)

Flag Register

프로세서의 현재 상태저장

x64 Architecture 의 플래그 레지스터는 RFLAGS (크기 : 64bit)

  • CF (Carry Flag)
    부호 없는 수의 연산 결과가 비트의 범위를 넘을 경우 설정된다
  • ZF (Zero Flag)
    연산의 결과 == 0 일 때
  • SF (Sign Flag)
    연산의 결과 == 음수
  • OF (Overflow Flag)
    부호 있는 수의 연산 결과가 비트의 범위를 넘을 경우 설정된다

레지스터 호환

0개의 댓글