[Dreamhack] System Hacking, STAGE 2

리수자·2023년 5월 22일
3

STAGE 2 : background - Computer Science

1. Computer Architecture

1) Background: Computer Architecture

(1) 서론

Computer Architecture

  • 컴퓨터구조(Computer Architecture) : 컴퓨터에 대한 기본 설계
  • 명령어 집합구조(Instruction Set Architecture, ISA) : CPU가 사용하는 명령어와 관련된 설계, 가장 널리 사용되는 ISA 중 하나가 인텔의 x86-64 아키텍처

2. 컴퓨터 구조와 명령어 집합 구조

1. 컴퓨터 구조(Computer Architecture)

  • 컴퓨터 구조(Computer Architecture) : 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법 (컴퓨터의 기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 그리고 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등)

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

  • CPU의 명령어에 대한 설계: 명령어 집합구조(Instruction Set Architecture)
    CPU가 처리해야하는 명령어를 설계하는 분야
    ex) ARM, MIPS, AVR, 인텔의 x86 및 x86-64

  • CPU의 하드웨어적 설계 : 마이크로 아키텍처(Micro Architecture)
    정의된 명령어 집합을 효율적으로 처리할 수 있도록, CPU의 회로를 설계하는 분야

2. 폰 노이만 구조

초기 컴퓨터 과학자 중 한명인 폰 노이만은 컴퓨터에 연산, 제어, 저장의 세 가지 핵심 기능이 필요하다고 생각했습니다. 근대의 컴퓨터는 연산과 제어를 위해 중앙처리장치(Central Processing Unit, CPU)를, 저장을 위해 기억장치(memory)를 사용합니다. 그리고 장치간에 데이터나 제어 신호를 교환할 수 있도록 버스(bus)라는 전자 통로를 사용합니다.

중앙처리장치🧠

CPU는 프로그램의 연산을 처리하고 시스템을 관리하는 컴퓨터의 두뇌입니다. 프로세스의 코드를 불러오고, 실행하고, 결과를 저장하는 일련의 모든 과정이 CPU에서 일어납니다. CPU는 산술/논리 연산을 처리하는 산술논리장치(Arithmetic Logic Unit, ALU)와 CPU를 제어하는 제어장치(Control Unit), CPU에 필요한 데이터를 저장하는 레지스터(Register) 등으로 구성됩니다.

기억장치💾

기억장치는 컴퓨터가 동작하는데 필요한 여러 데이터를 저장하기 위해 사용되며, 용도에 따라 주기억장치와 보조기억장치로 분류됩니다. 주기억장치는 프로그램 실행과정에서 필요한 데이터들을 임시로 저장하기 위해 사용되며, 대표적으로 램(Random-Access Memory, RAM)이 있습니다. 이와 반대로 보조기억장치는 운영 체제, 프로그램 등과 같은 데이터를 장기간 보관하고자 할 때 사용됩니다. 대표적으로 하드 드라이브(Hard Disk Drive, HDD), SSD(Solid State Drive)가 있습니다.

버스🚌

버스는 컴퓨터 부품과 부품 사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로를 말합니다. 대표적으로 데이터가 이동하는 데이터 버스(Data Bus), 주소를 지정하는 주소 버스(Address Bus), 읽기/쓰기를 제어하는 제어 버스(Control Bus)가 있습니다. 이 외에도 랜선이나 데이터 전송 소프트웨어, 프로토콜 등도 버스라고 불립니다.

💡기억장치가 있는데 CPU안에 레지스터가 왜 필요한가요?

CPU는 굉장히 빠른 속도로 연산을 처리하는데, 이를 위해 데이터의 빠른 교환이 필요합니다.

예를 들어 사탕을 1초에 100개 생산하는 기계가 있다고 가정합시다. 만약 이 기계에 초당 100개의 재료를 공급하지 못한다면, 재료가 공급될 때까지 대기해야 하므로 최대의 생산효율을 달성할 수 없습니다. 또한 완성된 사탕을 초당 100개씩 가져가지 못한다면, 결국 기계 앞에 사탕이 쌓여서 생산을 중단해야 하는 상황을 맞게 됩니다.

이와 마찬가지로 CPU도 필요한 데이터를 빠르게 공급하고, 반출할 수 있어야 자신의 효율을 제대로 발휘할 수 있습니다. 그런데 CPU의 연산속도가 기억장치와의 데이터 교환속도보다 압도적으로 빠르기 때문에, 기억장치만을 사용하면 병목현상이 발생합니다. 따라서 CPU는 교환속도를 획기적으로 단축하기 위해 레지스터와 캐시라는 저장장치를 내부에 갖고 있습니다.

0개의 댓글