Chapter 1-1

윤강훈·2024년 10월 22일

Computer Architecture

목록 보기
1/11

What is Computer?

Definition

컴퓨터란 무엇인가에 대한 정의는 이렇게 내릴 수 있습니다.

A machine performing a series of operations fast

직역하면 "일련의 작업(명령어)을 빠르게 수행하는 기계"
이 문장에서 하나 하나 좀 뜯어보겠습니다.

  • Machine: 자동화 기계, 전기적 기계
  • performing a series of operations: 데이터를 사용하여 명령어를 실행, 이걸 "프로세싱"이라고 칭할 수 있습니다.
  • a series of operations: (연산자 + 피연산자)의 조합 -> finite state machine

현재 일상생활에 들어와 있는 컴퓨터를 보면 조금은 이질감이 드는 정의이지만, 내부를 잘 뜯어보면 정말 맞는 말입니다. 명령어가 없는 컴퓨터는 없으니까요.

또한 옥스포드 영어 사전(2000)에서는 이렇게 정의합니다.

A calculating-machine; especially an automatic electronic device for performing mathematical or logical operations; frequently with defining word prefixed, as analog, digital, or electronic computer

수학적, 논리적 계산을 처리하기 위한 자동 전자 장치. 이것도 맞는 말이죠.

Von Neuman Architecture

현대 컴퓨터의 기본적인 구조로 자리 잡고 있는 폰 노이만 아키텍처입니다.

  • CPU, 메모리, 프로그램의 세가지 구성요소로 이루어져있음
  • 내장형 프로그래밍(Stored programming) 컴퓨터의 개념을 정립
  • 메모리 주소에 올려놓으면 순서대로 수행
  • 메모리와 CPU는 System Bus를 통해 정보 전달

Von Neuman bottleneck

폰 노이만 아키텍처가 기본적인 구조를 제시하긴 했지만, 분명 한계가 존재합니다.

  • 모든 정보는 메모리에서 가져옴
  • CPU의 속도는 매우 빠르게 개선됐음.
  • 그런데 메모리 속도는? CPU의 속도에 비해서는 상당히 느림.

이걸 개선하기 위한 모든 것들이 현대 컴퓨터 발전의 역사라고 볼 수 있겠습니다.

Harvard Architecture

폰 노이만 보틀넥을 해결하기 위해서 하나의 새로운 아키텍처가 등장합니다.

기본적인 아이디어는 "명령어 메모리와 데이터 메모리를 따로 나눠서 두 곳에서 나눠서 받으면 빨라지지 않나?"에서 시작합니다.

병렬 컴퓨팅(Parallel computing)을 사용했다고 볼 수 있죠.

그리고 이후에 수정된 것이 현대의 Caching 기법입니다.

Stored-Program Computer

폰 노이만 아키텍처에 따르면 프로그램은 코드화된 명령어들의 순서로 실행됩니다. 메모리는 명령어와 데이터를 모두 저장하고, CPU는 메모리에서 Fetch(가져오기)-Interpret(해석)-Execute(실행)의 과정을 거쳐서 명령어를 실행합니다.

What is Computer Architecture?

Definition

컴퓨터 구조에 대한 정의는 이렇게 내릴 수 있습니다.

The science and art of designing, selecting, and interconnecting hardware components and designing the hardware/software interface to create a computing system that meets functional, performance, energy consumption, cost, and other specific goals.

직역 해보면 이렇습니다. 하드웨어 구성 요소를 설계하고 선택하며 상호 연결하고, 하드웨어/소프트웨어 인터페이스를 설계하여 특정 목표(기능, 성능, 에너지 소비, 비용 등)를 충족하는 컴퓨팅 시스템을 만드는 과학이자 예술입니다.

쉽게 얘기하면 "하드웨어와 소프트웨어 간의 인터페이스를 만드는 것" 이라고 할 수 있습니다.

Computer Architecture

  • 프로그래머에게 보이는 컴퓨터의 속성

  • 프로그램의 논리적 실행에 직접적인 영향을 미치는 속성

  • 하드웨어가 소프트웨어(또는 프로그래머)에게 제공하는 인터페이스

  • Ex

    1. Instruction Set Architecture(ISA): Intel x86, ARM, RISC-V, MIPS...

    2. 32bit, 64bit architecture

      • 232=210×210×210×242^{32} = 2^{10} \times 2^{10} \times 2^{10} \times 2^{4}

      • 2102^{10} 하나당 한 단위씩이므로(KB-MB-GB)

      • 32bit = 2322^{32}byte(4GB) 메모리 지원

Old View

  • ISA Design
  • 레지스터, 메모리 주소 지정, 주소 지정 모드, 명령어 피연산자, 등... 을 설계

Real

  • 대상 기계의 특정 요구 사항
  • 비용, 전력 및 가용성 제약 내에서 성능을 극대화하도록 설계
  • ISA, Microarchitecture, Hardware를 포함

Microarchitecture

  • 하드웨어적인 구조를 나타냄
  • 특정 설계 제약 및 목표에 따른 ISA의 구현

Instruction Set Architecture(ISA)

  • 여러 구현을 통해 지속됨(portability, compatibility)
  • 다양한 방식으로 사용됨(generality)
  • 상위 수준에 편리한 기능 제공
  • 하위 수준에서 효율적인 구현 허용

How to Execute

프로그래머들은 보통 High-Level Language를 사용하여 프로그래밍하게 됩니다.
아래의 사진은 High-Level Language(C)가 실행되는 과정을 나타냅니다.

Compiler -> Assembler -> Linker를 거치는 과정을 통해 실행되게 됩니다.

System software

  • Compiler: HLL을 Machine Language로 변환
  • Operating System: 하드웨어 관리를 위한 다양한 추상을 제공
    • 입출력 장치를 조작하고 메모리를 관리
    • 작업 스케줄링 및 공유

Hardware

  • 하드웨어는 Low-Level에서만 동작하며, 이진 정보만을 사용(1 or 0)

Start Program

화면의 아이콘을 클릭하여 애플리케이션 프로그램을 실행하면 다음과 같은 순서를 따릅니다.

  1. 저장 장치(HDD 또는 SSD)에 있는 실행파일(Binary)이 메모리로 전송 -> Load
  2. CPU는 명령어를 한 번에 하나씩 실행
  3. CPU는 메모리(혹은 다른 I/O 장치)에서 명령어와 해당 데이터를 레지스터로 전송
  4. CPU는 산술 또는 논리 연산을 수행
  5. 실행 결과는 일시적으로 레지스터에 전송되고 CPU에 의해 메모리로 전송
  6. 실행을 출력은 모니터나 프린터와 같은 I/O 장치로 전달

Why Learn Computer Architecture?

사실 컴퓨터 구조라는 과목은 소프트웨어 쪽 설계 보다는 하드웨어적인 설계에 가까우며, 컴퓨터공학 보다는 전자공학에 조금 더 가깝다고 이야기할 수 있습니다.

그럼에도 컴퓨터공학을 전공하는 학생들에게 이 과목이 필수인 이유는 기본적으로 컴퓨터 내에서 어떤 일들이 일어나고 있는지를 이해하면 문제가 발생하거나, 성능 개선을 해야하는 측면에서 쉽게 접근할 수 있는 능력이 생깁니다.

또한 후행되는 과목인 컴파일러와 운영체제와 같은 주제에서 이해를 도울 수도 있습니다.

엔지니어의 관점에서 두가지 기억해야 할 것이 있습니다.

  1. 많이 사용되는 것은 빠르게
  2. 가끔 사용되는 것은 정확하게

이러한 관점에서도 컴퓨터구조라는 과목은 이후에 도움이 될 것입니다.

Correctness criteria

정확성에는 여러 기준이 있겠지만 두가지의 예시를 들어보겠습니다.

  1. 파이프라인 실행: 명령어의 파이프라인 실행이 올바르려면 결과가 마치 순차적으로 실행된 것과 같아야함
  2. 캐시 메모리: 캐시 메모리가 있는 시스템에서 명령어를 실행하는 것이 올바르려면 결과가 마치 캐시 메모리 없이 실행된 것과 같아야 함

두 예시에서 모두 마치(as if)라는 말을 사용하였습니다. 성능을 높이기 위해서 사용한 기술이 다른 값을 도출하면 아무런 의미가 없습니다.

즉,

성능 최적화를 했을 때 그 전과 같은 결과 도출을 보장하는 것

이 정확성의 기준이라고 볼 수 있겠습니다.

Abstraction

추상화는 불필요한 정보를 걸러내면서 단순화하는 작업입니다.

더 복잡한 시스템을 포괄하는 간단한 인터페이스의 역할을 합니다.

profile
Just do it.

0개의 댓글