A Tour of Computer Systems

전두엽힘주기·2025년 4월 25일

Computer System

목록 보기
1/13

1. 프로세서란?

정의

프로세서(Processor)는 컴퓨터 시스템에서 모든 연산을 처리하고 장치들을 제어하는 핵심 부품입니다. 흔히 CPU(Central Processing Unit)라고도 불리며, 두 용어는 거의 동의어로 쓰이지만, 프로세서는 소프트웨어적 시각에서의 용어, CPU는 하드웨어적 시각에서의 용어라는 차이가 존재하기도 합니다.

구성

프로세서는 보통 다음 세 가지 요소로 구성됩니다.

  • 연산장치(ALU, Arithmetic Logic Unit): 산술 연산(+, -, *, /) 및 논리 연산(AND, OR, NOT 등)을 수행합니다.
  • 제어장치(CU, Control Unit): 명령어를 해석하고 각 장치에 제어 신호를 보냅니다.
  • 레지스터(Register): CPU 내부에 위치한 매우 빠른 휘발성 메모리입니다. 임시 데이터를 저장하며, 속도는 RAM보다 훨씬 빠릅니다.

2. 인스트럭션과 컴파일 시스템

인스트럭션이란?

인스트럭션(Instruction)은 CPU가 이해하고 실행할 수 있는 기계어 명령입니다. 하나의 인스트럭션은 보통 어떤 연산을 수행할지에 대한 정보와, 연산의 대상이 되는 데이터나 주소를 포함하고 있습니다.

예를 들어 C 언어로 작성한 다음과 같은 코드:

printf("Hello World");

3. 메모리 계층 구조와 캐시

데이터 이동의 비용

현대 컴퓨터 시스템은 데이터를 이동하는 데 많은 자원을 소비합니다.
예를 들어, "Hello World" 프로그램의 인스트럭션은 처음에 하드 디스크에 저장되어 있다가, 프로그램 실행 시 메인 메모리(RAM)로 복사되고, 이후 CPU가 그것을 읽어 실행합니다.

데이터 스트림(예: 출력 문자열 등) 역시 디스크에서 메모리로, 메모리에서 디스플레이 장치로 여러 단계에 걸쳐 이동합니다.
이러한 반복적인 복사는 오버헤드(overhead) 를 유발하며, 시스템 성능 저하의 주요 원인이 됩니다.

메모리 계층 구조

시스템은 속도는 빠르지만 용량이 작은 저장 장치속도는 느리지만 용량이 큰 저장 장치 사이에서 균형을 맞추기 위해 계층 구조를 설계합니다.

계층설명대역폭지연 시간
레지스터CPU 내부 고속 저장소매우 높음매우 짧음
L1 캐시CPU와 가장 가까운 메모리, 매우 빠름매우 높음매우 짧음
L2 캐시CPU 근처에 위치, L1보다 느리지만 빠름높음짧음
L3 캐시여러 코어가 공유하는 캐시보통비교적 짧음
메인 메모리 (RAM)프로그램 실행 시 필요한 데이터 저장중간중간
디스크 (HDD/SSD)영구 저장소낮음길음

4. 지역성과 캐시 최적화

프로세서-메모리 성능 격차

프로세서의 연산 속도는 계속 빨라지고 있지만, 메모리의 속도 개선은 상대적으로 느립니다.
이로 인해 프로세서-메모리 성능 격차(memory wall) 문제가 발생하며, 이 격차를 줄이기 위해 캐시 메모리(Cache Memory) 가 사용됩니다.

캐시란?

캐시(Cache)는 프로세서가 단기적으로 필요로 할 가능성이 높은 데이터를 임시로 저장하는 고속 메모리입니다.
SRAM(Synchronous Random Access Memory) 기술을 기반으로 하여 DRAM보다 빠르지만, 용량이 작고 비용이 높습니다.

캐시는 일반적으로 여러 단계(Level)로 구성됩니다.

  • L1 캐시: 용량은 작지만, 레지스터 다음으로 가장 빠름
  • L2 캐시: CPU 전용 버스를 통해 연결되며, L1보다 느리지만 RAM보다 빠름
  • L3 캐시: 여러 코어가 공유하는 캐시, L2보다 크고 느림

지역성(Locality)

캐시 설계는 프로그램이 보이는 지역성(Locality) 특성을 활용합니다.

  • 시간 지역성(Temporal Locality): 최근 접근한 데이터에 다시 접근할 가능성이 높음
  • 공간 지역성(Spatial Locality): 인접한 주소의 데이터를 접근할 가능성이 높음

이러한 특성 덕분에 자주 사용되거나 인접한 데이터만 캐시에 저장하고, 빠르게 접근할 수 있습니다.


5. 커널과 문맥 전환

커널이란?

커널(Kernel)은 운영체제(OS)에서 하드웨어 자원과 소프트웨어를 관리하고 보호하는 핵심입니다.
커널은 다음과 같은 기능을 담당합니다.

  • 프로세스 관리 (프로세스 생성, 스케줄링, 종료)
  • 메모리 관리 (가상 메모리, 페이지 교체)
  • 입출력 장치 제어 (디스크, 네트워크, 주변 장치)
  • 파일 시스템 관리

문맥 전환(Context Switching)

문맥 전환은 CPU가 현재 실행 중인 프로세스를 중단하고, 다른 프로세스로 전환하는 작업입니다.
이 과정에서 다음이 필요합니다.

  • 현재 프로세스의 실행 상태(레지스터 값, 프로그램 카운터 등)를 저장
  • 다음 실행할 프로세스의 상태를 복원

문맥 전환 덕분에 멀티태스킹이 가능해지지만, 이 작업은 오버헤드를 유발하기 때문에 빈번하면 시스템 성능이 저하될 수 있습니다.


정리

개념요약
프로세서ALU, CU, 레지스터로 구성. 명령어 해석과 연산 수행
인스트럭션CPU가 수행하는 단위 명령어
컴파일 시스템전처리 → 컴파일 → 어셈블 → 링크를 거쳐 실행 파일 생성
캐시 메모리자주 사용하는 데이터를 저장해 CPU-메모리 속도 차이를 완화
지역성시간/공간적 데이터 접근 패턴을 활용해 캐시 효율 극대화
커널운영체제의 핵심. 프로세스, 메모리, 입출력 장치, 파일 시스템 관리
문맥 전환실행 프로세스를 바꾸기 위한 상태 저장 및 복원 작업

2개의 댓글

comment-user-thumbnail
2025년 4월 26일

많이 알아갑니다 :)

1개의 답글