연재 중집필 중인 책입니다. 아직 본문이 비어 있거나 채워지는 중인 장이 있습니다.

제 1 장

컴퓨터의 구성요소와 CPU

컴퓨터는 사용자, 응용 프로그램, 운영체제, 펌웨어, 하드웨어로 구성된다. 하드웨어는 다시 입력·기억·연산·제어·출력 다섯 가지로 나뉜다. 여기서 연산과 제어를 담당하는 부분은 한 칩에 들어가는데, 우리는 이 칩을 CPU라고 부른다.

컴퓨터의 정의

하드웨어는 수백만 개가 넘는 전자부품을 모아 만든 것이고, 그 위에서 프로그램이 돈다.

컴퓨터는 작성된 프로그램에 따라 입력장치로부터 자료를 받아 편집·가공·처리하고, 저장한 뒤 결과를 내보내는 전자자료처리 장치다.

입력장치로 들어온 원시자료는 처리를 거쳐 정보가 되어 나온다.

원시자료(raw data)는 이미 일어난 일을 그대로 적어둔 값이라 그 상태로는 의사결정에 쓰기 어렵다. 편집·가공을 거친 결과가 정보(information)이고, 의사결정에 쓰는 것은 정보다.

컴퓨터 시스템

Computer System의 다섯 층과 H/W · S/W · F/W상위 레벨하위 레벨사용자 (End-User)응용 프로그램 (Application S/W)운영체제 (Operating System)펌웨어 (Firmware)하드웨어 (Hardware)S/W · 소프트웨어F/W · 펌웨어H/W · 하드웨어세 이름에 들어가지 않는다

컴퓨터 시스템은 사용자, 응용 프로그램, 운영체제, 펌웨어, 하드웨어 다섯 층으로 나뉜다. 이 가운데 응용 프로그램과 운영체제를 합쳐 소프트웨어라 부른다.

구성요소설명
사용자시스템을 쓰는 사람(End-User)
응용 프로그램사용자가 직접 쓰는 소프트웨어와 그것을 만드는 도구
운영체제하드웨어와 시스템 동작을 직접 제어하고 관리한다
펌웨어하드웨어를 제어하는 소프트웨어. 전원을 켜면 운영체제를 메모리에 올린다
하드웨어정보 처리를 위한 물리적인 요소의 집합

응용 프로그램과 운영체제

응용 프로그램은 다시 네 부분으로 나뉜다.

구분
시스템 S/WWindows, iOS, Unix, Linux
응용 S/WExcel, MS-Office, 한글, 미디어 플레이어
개발환경SDK, Eclipse, Visual Studio
언어Java, Python, R, C++, C#, XML

UI/UX와 API, 프로세스와 스레드도 이 층에 속한다.

운영체제가 하는 일은 크게 넷이다.

구분하는 일
자원 관리자원 할당, 파일과 네트워크 관리
직접 제어입출력 제어, 메모리 제어, 프로세스와 스레드 처리
성능처리 능력과 신뢰도를 올리고 응답 시간을 줄인다
동시 실행멀티프로그래밍, 멀티스레딩, 멀티프로세싱

동시 실행은 가용성을 높이려는 수단이다. 프로그램 하나가 입출력을 기다리는 동안 다른 프로그램이 CPU를 쓰게 하는 것이 멀티프로그래밍이고, 그렇게 노는 시간을 줄여 처리량을 올린다.

펌웨어가 따로 있는 이유

펌웨어는 소프트웨어인데 하드웨어에 담겨 나온다. 메인보드의 BIOS와 UEFI, 저장장치와 네트워크 카드의 컨트롤러 코드가 다 여기 들어간다. 운영체제가 뜨기 전에 이미 돌고 있어야 하고, 실제로 운영체제를 메모리에 올리는 것이 펌웨어다. 그래서 H/W와 S/W 사이에 F/W를 따로 둔다.

하드웨어의 구성요소

하드웨어는 맨 아래 층이고, 구성요소는 다섯 가지다. 자료를 받는 것을 입력, 저장하는 것을 기억이라고 부른다. 편집·가공·처리는 연산이 맡고, 작성된 프로그램에 따른다는 조건이 제어이고, 결과를 내보내는 것은 출력이다.

5대 구성요소와 자료 · 제어의 흐름CPU · 중앙처리장치② 기억장치① 입력장치⑤ 출력장치③ 산술논리연산장치④ 제어장치명령과 자료연산 결과자료의 흐름제어 신호③ + ④ = CPU

자료는 입력장치로 들어와 연산장치와 기억장치를 오가며 처리되고 출력장치로 나간다. 제어장치는 자료를 직접 처리하지 않고 나머지 네 장치에 신호만 보낸다.

장치하는 일기술요소
① 입력장치프로그램과 자료를 컴퓨터 안으로 받아들인다키보드, 마우스, 음성인식, 웨어러블 기기, NFC·Bluetooth·WLAN
② 기억장치프로그램과 실행에 필요한 자료, 연산 결과를 기억한다HBM, DDR SDRAM, SSD, HDD, VTL, 테이프
③ 산술논리연산장치산술연산과 논리연산을 실행한다보조 프로세서, GPU, GPGPU
④ 제어장치각 장치의 동작 순서와 자료의 흐름을 지시한다다중 코어 CPU
⑤ 출력장치처리한 결과를 사람이 볼 수 있는 형태로 내보낸다모니터, 프로젝터, 프린터, 홀로그램

CPU

산술논리연산장치와 제어장치는 한 칩 안에 들어 있고, 둘을 합쳐 부르는 이름이 CPU다. 그래서 같은 컴퓨터를 CPU·기억장치·입력장치·출력장치 넷으로 나누기도 하고, 입력과 출력을 입출력장치 하나로 묶기도 한다. 나누는 방식이 다를 뿐 구성은 그대로다.

CPU는 외부에서 정보를 입력받아 기억하고, 프로그램의 명령어를 해석해 연산하며, 시스템을 제어하고 결과를 외부로 내보낸다.

CPU의 동작

CPU가 하는 동작은 다섯 가지인데, 매번 다 일어나지는 않는다.

구분세부 동작하는 일
공통 동작명령어 인출기억장치에서 명령어를 읽어온다
공통 동작명령어 해독어떤 동작을 할지 정하려고 명령어를 해독한다
명령어에 따라데이터 인출기억장치나 I/O 장치에서 데이터를 가져온다
명령어에 따라데이터 처리데이터를 산술 연산하거나 논리 연산한다
명령어에 따라데이터 쓰기결과를 주기억장치나 보조기억장치에 저장한다

명령어 인출과 해독은 어느 명령에서나 일어난다. CPU는 다음에 실행할 명령어를 기억장치에서 가져와야 하고, 가져온 뒤에는 그것이 무슨 명령인지 알아내야 한다. 데이터 인출과 처리, 쓰기는 명령어가 시킬 때만 일어난다. 메모리에 있는 값을 더하는 명령이면 셋이 다 일어나지만, 다음에 실행할 위치만 바꾸는 분기 명령이면 데이터를 건드리지 않는다.

CPU의 구성요소

CPU의 구조와 세 갈래 버스CPU내부 버스ALU · 산술논리연산장치레지스터 Set제어 유닛주기억장치주소 버스 (단방향)데이터 버스 (양방향)제어 버스 (단방향)

앞에서는 CPU를 연산장치와 제어장치 둘로 봤는데, 안을 들여다보면 레지스터가 하나 더 있다. 장치 다섯 가지로 나눌 때는 레지스터가 기억장치에 속해 있었다.

구성요소설명
ALU산술과 논리 연산을 실행하는 회로. 산술은 +, −, ×, ÷이고 논리는 AND, OR, XOR, NOT이다
레지스터(Register)접근 속도가 가장 빠른 기억장치. CPU 안에 넣을 수 있는 개수는 제한된다
제어 유닛명령어를 해독하고, 그것을 실행하는 데 필요한 제어 신호를 순서대로 만들어내는 하드웨어 모듈

레지스터가 CPU 안에 있는 이유는 속도다. 가장 빠른 기억장치인데 개수를 늘리는 데 한계가 있어서, 당장 연산에 쓰는 값만 레지스터에 들어가고 나머지는 기억장치에 남는다.

세 종류의 버스

ALU와 레지스터, 제어 유닛은 CPU 안의 내부 버스로 연결된다. CPU 밖으로는 주기억장치까지 버스 세 개가 나간다.

버스나르는 것방향
주소 버스CPU가 내보내는 주소 정보 (8/16/32비트)단방향
데이터 버스기억장치나 I/O 장치와 주고받는 데이터양방향
제어 버스Read, Write, Select 같은 동작 지시단방향

CPU는 메모리를 읽기도 하고 쓰기도 하니 데이터 버스만 양방향이고, 주소와 제어는 CPU가 내보내기만 한다.

발전 방향

장치별 변화

장치달라지는 것
입력음성인식과 웨어러블 기기가 늘고, NFC·Bluetooth·WLAN처럼 선 없이 연결되는 입력이 기본이 된다
기억FeRAM·MRAM·PRAM 같은 비휘발성 소자가 나오면서 주기억장치와 보조기억장치의 구분이 흐려진다
연산GPU와 GPGPU가 산술연산을 나눠 맡는다. 초거대 언어 모델(LLM) 학습에는 TPU와 NPU까지 쓰인다
제어메모리 컨트롤러가 CPU 안으로 들어와, 메모리 접근을 칩 바깥 부품에 맡기지 않는다
연산 + 기억HBM-PIM은 연산기를 메모리 다이 안에 넣어, 자료를 CPU까지 옮기지 않고 그 자리에서 계산한다

시스템 지표

항목방향
처리 속도1ms(1/1000초) → 1μs → 1ns → 1ps → 1fs(펨토초)
저장 용량KB → MB → GB → TB → PB(peta) → EB(exa) → ZB(zetta)
집적도TR → IC → SSI → MSI → LSI → VLSI → ULSI
신뢰도MTBF(Mean Time Between Failure)를 늘린다
전력탄소 배출 Zero, Zero Power I/O, 저전력 I/O

ULSI 다음 단계를 VVLSI(Very Very Large Scale IC)라고 부르기도 한다.

인터페이스 변화

AS-ISTO-BE효과
병렬 전송직렬 전송신호끼리 간섭하지 않고 전력을 덜 쓴다
Master/SlavePoint to Point3 Tier 구성이 2 Tier로 줄어든다
동기식(Clock 사용)비동기식 통신Clock을 쓰지 않아 EMI가 줄어든다
송신측 오류 복구수신측 오류 복구전송 속도가 올라간다
Blocked I/O비동기 I/O필요할 때만 이벤트로 처리한다

병렬 전송은 선 여러 개로 비트를 한꺼번에 보낸다. 속도를 올리려면 클럭을 높여야 하는데, 선마다 길이와 전기적 성질이 조금씩 달라서 비트가 도착하는 시각이 어긋난다. 이 어긋남이 Data Skew이고, 클럭이 빨라질수록 커진다. 어긋남이 한 비트 구간을 넘어서면 받는 쪽이 어느 비트가 어느 자리인지 알 수 없어서, 선을 늘려도 속도가 더 오르지 않는다. 직렬은 한 선으로 순서대로 보내니 선끼리 어긋날 일이 없다.

I/O 전압도 하나로 통일되지 않았다. 1.5V로 도는 메모리와 3.3V로 도는 플래시, 5V로 도는 주변장치가 한 보드에 같이 붙는다. 컨트롤러는 상대에 맞춰 신호 전압을 바꿔가며 구동한다.

장치를 연결하는 방법도 유선에서 무선으로 바뀌고 있다. 802.11 계열이 대표적이다. USB와 Thunderbolt는 케이블 하나로 전원과 데이터, 영상을 함께 주고받는다.

CXL은 CPU와 가속기, 메모리를 하나의 프로토콜로 연결한다. 지금까지는 GPU가 쓸 데이터를 CPU 쪽 메모리에서 GPU 메모리로 복사해야 했는데, CXL에서는 여러 장치가 같은 메모리를 캐시 일관성을 지킨 채 나눠 쓴다.

CPU1 / 71