최규상 님의 KOCW 강의 "컴퓨터 구조"를 정리한 글입니다.
* David A. Patterson님과 John L. Hennessy 님의
"컴퓨터 구조 및 설계" 책을 교제로 한 강의입니다. (책의 내용은 포함되지 않았습니다)
복잡해지는 하드웨어 위에서 더 빠르고 효율적으로 프로그램을 실행하기 위해 계층화/표준화/병렬화를 선택함
목표
- 프로그램이 기계어로 어떻게 바뀌는가 (+하드웨어가 명령어를 어떻게 수행하는가)
- 하드웨어 / 소프트웨어 인터페이스
- Performance의 정의를 알 수 있음 (+어떻게 향상시킬 수 있나)
- 하드웨어 디자인
- 병렬 프로그래밍
1. Introduction
컴퓨터 기술의 발전
- 무어의 법칙을 통해 급진적으로 발전함
무어의 법칙

- 1965년에 Intel CEO인 고든 무어가 제시함
- 반도체 칩 성능이 2년마다 2배씩 업그레이드 될것이라 예언함 (Log Scale)
- 이를 통해 새로운 애플리케이션이 등장함 (자동차 컴퓨터, 스마트폰 등)
컴퓨터 종류
- 컴퓨터는 계산을 위해 만들어진 기계이지만, 점차 사용목적이 달라지면서 그에 따른 종류가 생겨나고, 서로 다른 방향으로 발전해옴
| 종류 | 설명 | 특징 |
| PC (Personal Computer) | 일반적인 목적 | 가격 대비 성능 중요 |
| 서버 컴퓨터 (Server Computer) | 기업용 | 고용량·고성능·고신뢰성 |
| 슈퍼컴퓨터 (Super Computer) |
과학 문제 해결용
|
유지비용 높음 (국방, 기상청)
|
| 임베디드 컴퓨터 (Embedded Computer) | 스마트폰, 태블릿 등에 내장 | 저비용 |
포스트 PC 시대
- 컴퓨터를 작고, 실물로 사용하지 않는 방향으로 발전됨
| 구분 | 설명 |
| Personal Mobile Device |
배터리 탑재, 휴대성과 편의성을 갖춘 개인용 기기 (스마트폰, 태블릿 등)
|
| Software as a Service (SaaS) | 중요한 기능(보안)을 제공하는 클라우드 서비스 (예: Amazon, Google) 대규모 데이터 센터(Warehouse Scale Computers)를 기반으로 동작 |
성능 평가
- 하나의 프로그램의 성능은 CPU 속도 뿐만이 아님
| 요소 | 설명 | 예시 |
| 알고리즘 | 같은 일을 얼마나 적은 연산으로 끝내느냐 | 빅오 표기법 |
| 아키텍처 & 컴파일러 | 명령어를 얼마나 최적화된 구조로 처리하느냐 | - ISA, 파이프라인 구조, 분기 예측, SIMD 지원 여부 등 - 불필요한 연산 제거, 레지스터 재사용, 루프 전개 등 |
| 프로세서 & 메모리 | 단위시간당 얼마나 명령어를 처리할 수 있는가 | 클럭 속도, 코어 수, 파이프라인 깊이, 캐시 등 |
| I/O 시스템 & OS | 단위시간당 얼마나 I/O요청을 처리할 수 있는가 | 디스크 속도, 네트워크 지연, 시스템 콜 비용 등 |
2. Eight Great Ideas in Computer Architecture
| 원칙 | 설명 |
| Moore's Law |
반도체 기술 발전으로 트랜지스터 수가 2년마다 2배 증가하여 성능 향상
|
| Abstraction |
복잡한 하드웨어/소프트웨어를 계층화하여 독립적이고 효율적인 설계 가능
|
| Make the Common Case Fast |
자주 발생하는 작업을 최적화하여 시스템 전체의 성능을 향상
|
| Parallelism |
여러 연산을 동시에 수행하여 성능을 극대화
|
| Pipelining |
여러 명령어를 연속적으로 겹쳐 실행하여 처리량 향상
|
| Prediction |
분기 예측 등을 통해 성능 저하를 방지하고 실행 속도를 증가
|
| Hierarchy of Memories |
캐시, RAM, 디스크 등 계층 구조를 통해 성능과 비용 균형 유지
|
| Dependability via Redundancy (RAID) |
중복성을 활용하여 시스템 신뢰성과 내구성을 향상 (예: RAID를 통한 데이터 보호)
|
3. Below Your Program
프로그램 수행 계층
| 구성 요소 | 설명 |
| 애플리케이션 소프트웨어 | High-Level Language(HLL)로 작성 |
| 시스템 소프트웨어 | - 컴파일러: HLL → 기계어 변환 - 운영체제: 입출력 처리, 메모리 관리, 작업 스케줄링, 자원 공유 |
| 하드웨어 | 프로세서, 메모리, I/O 컨트롤러 |
프로그램 언어 계층
| 코드 계층 | 설명 |
| HLL (High-Level Language) |
프로그래머가 사용하는 고급 프로그래밍 언어
|
| 어셈블리어 |
하드웨어 기계어를 사람이 이해할 수 있도록 변환한 언어 (컴파일러에 의해 생성)
|
| 기계어 (Hardware Representation) |
2진수 형태로 명령어와 데이터를 직접 표현 (어셈블러에 의해 변환됨)
|
4. Under the Covers
컴퓨터 구성요소
| 구성 요소 | 하위 구성 요소 | 설명 |
| Input/Output | - User Interface - Storage - Network Adapter |
사용자 입력 및 출력, 데이터 저장 및 네트워크 연결
|
| Display | Touchscreen | 화면 출력 장치 |
| LCD Screen | Frame Buffer에 영상 데이터 저장하여 화면에 출력 | |
| Battery | - | 전원 공급 장치 |
| Motherboard | - |
프로세서, 메모리, I/O 장치를 연결하는 주요 회로 기판
|
| Processor (CPU) | - | 연산 및 제어 기능 수행 |
| Core | 연산 담당 (프로세서의 기본 단위) | |
| Datapath | 데이터 연산 및 이동 경로 관리 | |
| Control | 프로세서의 컴포넌트 제어 | |
| Cache Memory |
자주 사용하는 데이터를 저장하여 빠른 접근을 제공 (SRAM 사용)
|
Abstraction
- 복잡성을 다루는 기술
- ✅ 캡슐화: 하위 레벨의 세부사항을 숨기고 상위 레벨에서 사용하는데 필요한 정보만 제공함
- ➡️ 하위 레벨의 복잡성을 낮추어, 시스템을 쉽게 이해하고 사용 및 관리할 수 있음
| 구성요소 | 설명 |
| ISA (Instruction Set Architecture) |
소프트웨어가 하드웨어에게 "어떤 명령을 어떤 방식으로 수행할 수 있는지"를 정의한 규격
- 소프트웨어: ISA에 정의된 Instruction들의 조합으로 프로그램을 구성함 - 하드웨어: 각 Instruction을 해석하고 실행 |
| ABI (Application Binary Interface) |
프로그램이 OS의 기능을 사용하기 위한 인터페이스
✅ ISA 위에 운영체제 및 시스템 소프트웨어와의 호출 규약을 추가한 개념 ➡️ 애플리케이션이 OS와 하드웨어에서 바이너리 수준으로 호환되게 실행하도록 보장 |
| Implementation |
하드웨어 및 소프트웨어가 어떻게 실제로 구현되는지를 의미
✅ CPU 설계 방식, 마이크로아키텍처, 메모리 구조 등 |
예시) ISA
더보기
C언어
c = a+b
어셈블리어 (x86)
mov eax, [a]
add eax, [b]
mov [c], eax
➡️ CPU는 해당 명령에 대해 이해할 수 있음
✅ add 명령어, eax 레지스터 , 메모리 -> 레지스터 이동 규칙
예시) ABI
더보기
write (system call)
C언어
write(1, "hi\n", 3);
어셈블리어 (x86)
mov rax, 1 ; syscall 번호 (write)
mov rdi, 1 ; fd
mov rsi, buf ; buffer
mov rdx, 3 ; length
syscall
➡️ CPU는 해당 명령에 대해 이해할 수 있음
✅ syscall 번호 (rax), 인자 순서와 레지스터, syscall 명령 사용
데이터 저장 방법
| 메모리 유형 | 특징 | 예시 | 설명 |
| Primary Memory | 휘발성 메모리 | RAM (Random Access Memory) |
실행 중인 프로그램과 데이터를 임시로 저장
속도가 빠르고 CPU와 직접 통신 |
| Secondary Memory | 비휘발성 메모리 | HDD (Hard Disk Drive) SSD (Solid State Drive) Optical Discs (CD, DVD) |
장기적인 데이터 저장용
대용량 데이터 저장이 가능 전원이 꺼져도 데이터가 유지 |
네트워크
| 네트워크 유형 | 설명 | 특징 | 예시 |
| LAN (Local Area Network) |
지역 내의 작은 범위 | - 제한된 공간(건물, 캠퍼스 등) 내에서 장비들 간의 통신 - 빠른 데이터 전송 속도 - 비교적 낮은 비용으로 구축 가능 |
회사 내 네트워크 학교 네트워크 집안의 Wi-Fi 네트워크 |
| WAN (Wide Area Network) |
광범위한 지역 | - 지리적으로 먼 장소들(국가나 대륙)을 연결 - 상대적으로 느린 전송 속도와 높은 비용 - 인터넷과 같은 글로벌 네트워크를 포함 |
인터넷 기업의 지사 네트워크 |
| Wireless Network (무선 네트워크) |
전선 없이 통신 | - Wi-Fi, Bluetooth, Cellular(3G, 4G, 5G) 등 - 이동성 제공, 다양한 장치에서 연결 가능 - 유선보다 낮은 안정성, 신호 간섭 가능성 |
Wi-Fi 네트워크 블루투스 연결 4G/5G 모바일 네트워크 |
5. Technologies for Building Processors and Memory
| Year | Technology used in computers |
Relative performance/unit cost
|
| 1951 | Vacuum Tube | 1 |
| 1965 | Transistor | 35 |
| 1975 | Integrated circuit | 900 |
| 1995 | Very large-scale integrated circuit | 2,400,000 |
| 2013 | Ultra large-scale integrated circuit | 250,000,000,000 |
- DRAM Capacity가 급격히 늘어남
Semiconductor
| 구성요소 | 설명 | 예시 |
| Conductor (전도체) | 전기가 잘 흐르는 물질 | 구리, 금속 |
| Insulator (절연체) | 전기가 흐르지 않는 물질 |
고무, 유리
|
| Switch (스위치) | 전기 회로에서 전류를 켜거나 끌 수 있는 장치 |
트랜지스터 (주로 반도체 스위치로 구현됨)
|
ICs
- Integrated Circuit (집적 회로)
- 여러 전자 부품(트랜지스터, 저항, 캐패시터 등)을 하나의 칩에 집적시킨 회로.
- 주로 실리콘을 사용하여 반도체를 생성함
- 실리콘 웨이퍼 제조 과정
- 실리콘을 슬라이싱하여 웨이퍼 형태로 자름
- 웨이퍼 위에 미세한 패턴을 입혀 회로를 설계
- 다이서로 칩을 패키징하고, 이를 테스트하여 동작 여부를 확인
| 용어 | 설명 |
| Yield (수율) |
웨이퍼당 동작하는 die의 비율 (정상 동작하는 칩의 비율을 의미)
|
| Die (다이) |
웨이퍼에서 잘라낸 작은 칩 (하나의 다이가 하나의 칩을 의미)
웨이퍼 내에는 여러 개의 다이가 있을 수 있음. |
출처