본문으로 건너뛰기

컴퓨터의 구조와 성능

Executive Summary

본 문서는 컴퓨터 시스템의 기본 구조, 성능 향상 기술, 그리고 현대적인 병렬 처리 방식에 대한 핵심 원리를 종합적으로 설명합니다.

핵심 구조: 폰 노이만 구조

컴퓨터 시스템의 근간을 이루는 것은 폰 노이만 구조로, 모든 프로그램은 **중앙처리장치(CPU)**에 의해 실행되기 전에 반드시 메인 메모리에 적재되어야 합니다. 이 구조적 특징으로 인해 메모리는 시스템의 핵심 작업 공간이며, 효율적인 메모리 관리가 운영체제의 주요 과제가 됩니다.

성능 최적화: 저장장치 계층 구조

컴퓨터의 성능은 저장장치 계층 구조를 통해 최적화됩니다. 속도가 가장 빠른 레지스터부터 캐시, 메인 메모리, 보조저장장치에 이르기까지 속도, 용량, 비용을 균형 있게 배치하여 시스템 전반의 효율을 극대화합니다. 특히 CPU메인 메모리 간의 속도 차이를 완화하기 위한 캐시 메모리는 시스템 성능에 결정적인 역할을 합니다.

입출력 관리 기술

CPU의 효율을 저해하는 입출력(I/O) 작업을 독립적으로 처리하기 위해 인터럽트직접 메모리 접근(DMA) 기술이 사용됩니다. 이 기술들은 CPU가 입출력 완료를 기다리지 않고 다른 연산을 수행할 수 있게 하여 시스템의 전체 처리량을 높입니다.

현대적 병렬 처리

현대 컴퓨터 시스템은 멀티프로세싱을 통해 성능의 한계를 극복합니다. 단일 칩에 여러 개의 처리 코어를 집적한 멀티코어 시스템과 하나의 코어에서 여러 작업 단위(스레드)를 동시에 처리하는 CPU 멀티스레드 기술은 병렬 처리 능력의 핵심입니다. 이러한 발전은 무어의 법칙을 계승하면서도, 암달의 법칙에 따라 시스템 전체의 균형 잡힌 성능 향상이 중요함을 시사합니다.


1. 컴퓨터의 기본 구조와 작동 원리

컴퓨터 시스템은 상호작용하는 하드웨어 구성 요소들의 집합체이며, 그 작동은 폰 노이만 구조라는 핵심 원리에 기반합니다. 프로그램이 실행되는 과정은 고급언어에서 기계어로 변환되는 체계적인 단계를 거칩니다.

1.1 하드웨어 구성 요소

컴퓨터 하드웨어는 기능에 따라 필수 장치주변 장치로 구분됩니다.

필수 장치

  • 중앙처리장치(CPU): 프로그램의 명령어를 해석하고 연산을 실행하는 컴퓨터의 두뇌
    • 제어장치, 산술논리 연산장치(ALU), 레지스터로 구성
  • 메인 메모리(주기억장치): 작업에 필요한 프로그램과 데이터를 저장하는 핵심 작업 공간
    • 바이트 단위로 주소가 부여됨

주변 장치

  • 입력 장치: 외부 데이터를 컴퓨터로 입력하는 장치 (예: 키보드, 마우스)
  • 출력 장치: 처리 결과를 사용자가 인지할 수 있는 형태로 출력하는 장치 (예: 모니터, 프린터)
  • 저장 장치(보조저장장치): 메모리보다 속도는 느리지만 용량이 크고 저렴하며, 전원이 꺼져도 데이터가 영구적으로 보존됨
    • 자성 이용: 하드디스크, 플로피디스크
    • 레이저 이용: CD, DVD, Blu-ray
    • 메모리 이용: USB 드라이버, SD 카드, SSD

메인보드

CPU, 메모리 등 모든 부품을 연결하는 기반이 되는 회로 기판으로, 각 장치들은 **버스(bus)**라는 데이터 통로를 통해 연결됩니다.

1.2 폰 노이만 구조 (Von Neumann Architecture)

현대 컴퓨터 시스템의 기본 모델로, CPU, 메모리, 입출력장치, 저장장치가 버스로 연결된 구조를 말합니다. 이 구조의 가장 큰 특징은 프로그램 내장 방식으로, 모든 프로그램은 실행되기 위해 반드시 보조저장장치에서 메인 메모리로 옮겨져야(적재되어야) 한다는 점입니다. 이로 인해 메인 메모리는 시스템의 유일한 작업 공간이 되며, 메모리 공간의 크기와 관리 방식이 시스템 성능에 직접적인 영향을 미칩니다.

"요리사 모형" 비유

  • 요리사: CPU
  • 도마: 메인 메모리
  • 보관 창고: 보조저장장치

요리사가 요리를 하려면 재료를 보관 창고에서 도마 위로 가져와야 하듯이, CPU가 프로그램을 실행하려면 데이터를 저장장치에서 메모리로 가져와야 합니다. 도마가 작으면 재료를 한 번에 다 올릴 수 없어 작업 효율이 떨어지는 것처럼, 메인 메모리가 작으면 컴퓨터 속도가 느려집니다.

1.3 프로그램 실행 과정

프로그램은 소스 코드 작성부터 컴퓨터가 이해하는 기계어 코드로 변환되어 실행되기까지 여러 단계를 거칩니다.

용어설명
고급 언어사람이 이해하기 쉬운 단어와 문법으로 구성된 프로그래밍 언어 (예: C, Java)
저급 언어기계가 이해하기 쉬운 언어로, 어셈블리어와 기계어가 포함됨
컴파일러(Compiler)고급 언어로 작성된 소스 코드 전체를 기계어로 번역하여 실행 파일을 생성하는 프로그램
인터프리터(Interpreter)소스 코드를 한 줄씩 번역하여 즉시 실행하는 프로그램. 실행 파일을 생성하지 않음
어셈블러(Assembler)어셈블리어를 기계어로 번역하는 프로그램
링커(Linker)컴파일된 목적 프로그램(오브젝트 코드)과 라이브러리 파일 등을 연결하여 하나의 실행 가능한 모듈을 생성
로더(Loader)실행 가능한 프로그램을 보조저장장치에서 메인 메모리로 적재하여 실행을 준비하는 시스템 소프트웨어

데이터 구조: 운영체제에서는 데이터를 효율적으로 관리하기 위해 큐(FIFO), 스택(LIFO), 배열, 연결 리스트 등의 자료구조를 필수적으로 사용합니다.


2. 중앙처리장치(CPU)와 메모리

CPU는 명령어 처리의 주체이며, 메모리는 그 작업 공간입니다. 두 장치의 긴밀한 상호작용이 컴퓨터의 모든 연산을 가능하게 합니다.

2.1 CPU의 내부 구조와 동작

CPU는 세 가지 핵심 요소로 구성되어 협업을 통해 명령어를 처리합니다.

구성 요소역할요리사 모형 비유
산술논리 연산장치(ALU)덧셈, 뺄셈 등 산술 연산과 AND, OR 등 논리 연산을 수행요리
제어 장치(Control Unit)CPU 내외부 장치에 작업 지시 신호를 보내고 전체 흐름을 제어작업 지시
레지스터(Register)연산에 필요한 데이터를 CPU 내부에 임시로 보관하는 고속 저장 공간재료 임시 보관

2.2 주요 레지스터의 종류와 역할

레지스터는 용도에 따라 범용 레지스터특수 목적 레지스터로 나뉩니다.

구분레지스터특징
범용데이터 레지스터 (DR)메모리에서 가져온 데이터를 임시로 저장
주소 레지스터 (AR)데이터나 명령어가 저장된 메모리 주소를 저장
특수프로그램 카운터 (PC)다음에 실행할 명령어의 메모리 주소를 저장
명령어 레지스터 (IR)현재 실행 중인 명령어를 저장
메모리 주소 레지스터 (MAR)CPU가 접근하려는 메모리 주소를 저장
메모리 버퍼 레지스터 (MBR)메모리에서 읽어오거나 쓸 데이터를 임시로 저장

2.3 메모리 종류와 메모리 보호

메모리는 전원 유지 여부에 따라 휘발성 메모리비휘발성 메모리로 구분됩니다.

휘발성 메모리 (RAM)

전원이 꺼지면 데이터가 사라집니다.

  • DRAM: 주기적으로 데이터 재충전이 필요하며, 일반적인 메인 메모리로 사용됨
  • SRAM: 전원이 공급되는 동안 데이터를 유지하며, 속도가 빨라 캐시 메모리에 사용됨

비휘발성 메모리 (ROM)

전원이 꺼져도 데이터가 유지됩니다.

  • 플래시 메모리: SSD, USB 드라이버 등에 사용됨
  • 롬(ROM): 주로 바이오스(BIOS)와 같이 변경 가능성이 거의 없는 시스템 정보를 저장

메모리 보호

시분할 시스템에서는 여러 프로그램이 메모리를 공유하므로, 한 프로세스가 다른 프로세스나 운영체제의 영역을 침범하지 못하도록 보호해야 합니다. 이를 위해 CPU는 하드웨어적으로 **경계 레지스터(Bound Register)**와 **한계 레지스터(Limit Register)**를 사용하여 현재 실행 중인 프로세스가 접근할 수 있는 메모리 주소 범위를 제한하고 감시합니다.


3. 컴퓨터 성능 향상 기술

컴퓨터 시스템은 CPU, 메모리, 저장장치 등 속도가 다른 장치들 간의 병목 현상을 해결하고 전반적인 처리 효율을 높이기 위해 다양한 기술을 사용합니다.

3.1 속도 차이 완화: 버퍼와 캐시

버퍼(Buffer)

속도가 다른 두 장치 간에 데이터를 일시적으로 저장하여 속도 차이를 완화하는 메모리 공간입니다.

스풀(Spool)

CPU와 입출력장치가 독립적으로 동작하도록 하는 소프트웨어적 버퍼입니다. 대표적인 예로 프린터 스풀러가 있으며, 인쇄 데이터를 스풀에 저장해두고 CPU는 다른 작업을 계속할 수 있게 합니다.

캐시(Cache)

CPU메인 메모리 사이의 속도 차이를 극복하기 위해 사용되는 고속 임시 저장 장소입니다.

작동 원리: CPU는 메모리 접근 전 캐시를 먼저 확인합니다. 원하는 데이터가 캐시에 있으면 캐시 히트(Cache Hit), 없으면 **캐시 미스(Cache Miss)**가 발생합니다. 캐시 히트 비율(적중률)이 높을수록 성능이 향상됩니다.

쓰기 정책:

  • 즉시 쓰기(Write-through): 캐시 데이터 변경 시 즉시 메모리에 반영하여 데이터 일관성을 유지하지만 속도가 느림
  • 지연 쓰기(Write-back): 변경된 내용을 모아 주기적으로 메모리에 반영하여 속도는 빠르지만, 일시적인 데이터 불일치가 발생할 수 있음

계층 구조: CPU와 가까운 순서대로 L1 캐시(명령어/데이터 분리)와 L2 캐시(일반)로 구성되어 계층적으로 데이터를 관리합니다.

3.2 저장장치 계층 구조 (Storage Hierarchy)

속도가 빠르고 비싼 저장장치를 CPU 가까이에, 느리고 저렴한 대용량 저장장치를 바깥쪽에 배치하는 구조입니다. 이를 통해 사용자는 합리적인 비용으로 빠른 속도와 큰 저장 공간을 동시에 확보할 수 있습니다.

계층: 레지스터 > 캐시 > 메인 메모리 > 보조저장장치

3.3 효율적인 입출력(I/O) 관리

인터럽트(Interrupt)

입출력장치가 작업을 완료했을 때 CPU에 완료 신호를 보내는 방식입니다. CPU가 주기적으로 장치 상태를 확인하는 폴링(Polling) 방식과 달리, CPU는 입출력이 진행되는 동안 다른 작업을 처리할 수 있어 시스템 효율이 크게 향상됩니다.

직접 메모리 접근(DMA, Direct Memory Access)

입출력 관리자(DMA 컨트롤러)가 CPU의 개입 없이 직접 메모리에 접근하여 데이터를 전송하는 기술입니다. 이를 통해 CPU는 입출력 관련 부담에서 벗어나 본연의 연산 작업에 집중할 수 있습니다.

사이클 훔치기(Cycle Stealing)

CPUDMA가 동시에 메모리 접근을 시도할 때, 시스템 버스 제어권이 DMA에 양보되는 현상입니다. 이는 CPU의 사이클을 잠시 "훔치는" 것과 같지만, 전체 시스템 성능 향상에 기여합니다.


4. 멀티프로세싱과 병렬 처리

단일 프로세서의 성능 향상이 한계에 도달하면서, 여러 개의 처리 장치를 사용하여 작업을 병렬로 수행하는 멀티프로세싱 기술이 보편화되었습니다.

4.1 멀티프로세서와 멀티코어

멀티프로세서 시스템

하나의 컴퓨터에 두 개 이상의 물리적인 CPU를 장착하여 성능을 높이는 시스템입니다. 모든 프로세서는 메인 메모리를 공유합니다.

멀티코어 시스템

단일 CPU 칩 내에 여러 개의 핵심 처리 장치, 즉 **코어(Core)**를 집적한 구조입니다. 이를 통해 물리적인 공간을 절약하면서 멀티프로세싱과 유사한 효과를 얻습니다. (예: 듀얼코어, 쿼드코어)

4.2 CPU 멀티스레드와 명령어 병렬 처리

명령어 병렬 처리

하나의 코어 내에서 여러 개의 명령어를 동시에 처리하는 기술입니다.

CPU 멀티스레드

하나의 코어가 여러 개의 스레드(Thread), 즉 작업의 논리적 단위를 동시에 처리하여 코어의 활용률을 극대화하는 기술입니다. 현대의 CPU멀티코어멀티스레드 기술을 결합하여 높은 병렬 처리 성능을 제공합니다.

4.3 성능 관련 법칙

무어의 법칙(Moore's Law)

반도체 집적회로의 성능이 24개월마다 2배로 증가한다는 법칙입니다. 최근에는 클럭 속도 향상 대신 코어 수를 늘리는 방식으로 이 법칙을 이어가고 있습니다.

암달의 법칙(Amdahl's Law)

시스템의 일부만 개선될 때 전체 시스템의 성능 향상은 그 개선된 부분의 비율에 의해 제한된다는 법칙입니다. 즉, CPU 속도를 아무리 높여도 메모리나 저장장치 등 다른 부분의 속도가 따라오지 못하면 전체 성능 향상에는 한계가 있습니다. 이는 시스템의 균형 잡힌 발전이 중요함을 시사합니다.