프로세서(Processor)는 컴퓨터 시스템에서 모든 연산을 처리하고 장치들을 제어하는 핵심 부품입니다. 흔히 CPU(Central Processing Unit)라고도 불리며, 두 용어는 거의 동의어로 쓰이지만, 프로세서는 소프트웨어적 시각에서의 용어, CPU는 하드웨어적 시각에서의 용어라는 차이가 존재하기도 합니다.
프로세서는 보통 다음 세 가지 요소로 구성됩니다.
인스트럭션(Instruction)은 CPU가 이해하고 실행할 수 있는 기계어 명령입니다. 하나의 인스트럭션은 보통 어떤 연산을 수행할지에 대한 정보와, 연산의 대상이 되는 데이터나 주소를 포함하고 있습니다.
예를 들어 C 언어로 작성한 다음과 같은 코드:
printf("Hello World");
현대 컴퓨터 시스템은 데이터를 이동하는 데 많은 자원을 소비합니다.
예를 들어, "Hello World" 프로그램의 인스트럭션은 처음에 하드 디스크에 저장되어 있다가, 프로그램 실행 시 메인 메모리(RAM)로 복사되고, 이후 CPU가 그것을 읽어 실행합니다.
데이터 스트림(예: 출력 문자열 등) 역시 디스크에서 메모리로, 메모리에서 디스플레이 장치로 여러 단계에 걸쳐 이동합니다.
이러한 반복적인 복사는 오버헤드(overhead) 를 유발하며, 시스템 성능 저하의 주요 원인이 됩니다.
시스템은 속도는 빠르지만 용량이 작은 저장 장치와 속도는 느리지만 용량이 큰 저장 장치 사이에서 균형을 맞추기 위해 계층 구조를 설계합니다.
| 계층 | 설명 | 대역폭 | 지연 시간 |
|---|---|---|---|
| 레지스터 | CPU 내부 고속 저장소 | 매우 높음 | 매우 짧음 |
| L1 캐시 | CPU와 가장 가까운 메모리, 매우 빠름 | 매우 높음 | 매우 짧음 |
| L2 캐시 | CPU 근처에 위치, L1보다 느리지만 빠름 | 높음 | 짧음 |
| L3 캐시 | 여러 코어가 공유하는 캐시 | 보통 | 비교적 짧음 |
| 메인 메모리 (RAM) | 프로그램 실행 시 필요한 데이터 저장 | 중간 | 중간 |
| 디스크 (HDD/SSD) | 영구 저장소 | 낮음 | 길음 |
프로세서의 연산 속도는 계속 빨라지고 있지만, 메모리의 속도 개선은 상대적으로 느립니다.
이로 인해 프로세서-메모리 성능 격차(memory wall) 문제가 발생하며, 이 격차를 줄이기 위해 캐시 메모리(Cache Memory) 가 사용됩니다.
캐시(Cache)는 프로세서가 단기적으로 필요로 할 가능성이 높은 데이터를 임시로 저장하는 고속 메모리입니다.
SRAM(Synchronous Random Access Memory) 기술을 기반으로 하여 DRAM보다 빠르지만, 용량이 작고 비용이 높습니다.
캐시는 일반적으로 여러 단계(Level)로 구성됩니다.
캐시 설계는 프로그램이 보이는 지역성(Locality) 특성을 활용합니다.
이러한 특성 덕분에 자주 사용되거나 인접한 데이터만 캐시에 저장하고, 빠르게 접근할 수 있습니다.
커널(Kernel)은 운영체제(OS)에서 하드웨어 자원과 소프트웨어를 관리하고 보호하는 핵심입니다.
커널은 다음과 같은 기능을 담당합니다.
문맥 전환은 CPU가 현재 실행 중인 프로세스를 중단하고, 다른 프로세스로 전환하는 작업입니다.
이 과정에서 다음이 필요합니다.
문맥 전환 덕분에 멀티태스킹이 가능해지지만, 이 작업은 오버헤드를 유발하기 때문에 빈번하면 시스템 성능이 저하될 수 있습니다.
| 개념 | 요약 |
|---|---|
| 프로세서 | ALU, CU, 레지스터로 구성. 명령어 해석과 연산 수행 |
| 인스트럭션 | CPU가 수행하는 단위 명령어 |
| 컴파일 시스템 | 전처리 → 컴파일 → 어셈블 → 링크를 거쳐 실행 파일 생성 |
| 캐시 메모리 | 자주 사용하는 데이터를 저장해 CPU-메모리 속도 차이를 완화 |
| 지역성 | 시간/공간적 데이터 접근 패턴을 활용해 캐시 효율 극대화 |
| 커널 | 운영체제의 핵심. 프로세스, 메모리, 입출력 장치, 파일 시스템 관리 |
| 문맥 전환 | 실행 프로세스를 바꾸기 위한 상태 저장 및 복원 작업 |
많이 알아갑니다 :)