![[Chapter01.pdf]]
# 1. Design Concepts
## 1.1. Analog vs. Digital Signal → 디지털 시스템의 출발점
> §1.1에서는 아날로그와 디지털 신호의 차이를 정의한다. 이 구분이 §1.2의 이진수 표현으로 이어지고, §1.3에서 디지털 시스템이 왜 노이즈에 강한지를 설명하는 토대가 된다.
### 1.1.1 아날로그 시스템 vs. 디지털 시스템
|구분|신호 특성|예시|
|---|---|---|
|**Analog System**|지정된 범위 내에서 연속적으로 변화|AM/FM 라디오|
|**Digital System**|이산적인(discrete) 값만 취함|PC, 스마트폰|
![[스크린샷 2026-05-01 오후 3.03.33.png]]
### 1.1.2 Binary Number (이진 신호)
디지털 시스템에서 전자 신호는 **Binary (Digit)** 로 표현된다.
- 두 가지 값: `0` 또는 `1`
- 표현 방식의 동의어
|값|표현 방법|
|---|---|
|0|False (F) / Low (L) / OFF|
|1|True (T) / High (H) / ON|
![[스크린샷 2026-05-01 오후 3.04.14.png]]
### 1.1.3 Positive vs. Negative Logic System
전압 레벨과 논리값의 대응 방식에 따라 두 시스템으로 나뉜다.
![[스크린샷 2026-05-01 오후 3.04.29.png]]
|시스템|높은 전압(V_DD)|낮은 전압(V_SS)|
|---|---|---|
|**Positive Logic**|Logic 1 (True/High)|Logic 0 (False/Low)|
|**Negative Logic**|Logic 0 (False/Low)|Logic 1 (True/High)|
- V₁,min ~ V_DD → Logic 1, V_SS ~ V₀,Max → Logic 0, 그 사이 범위는 **Undefined (불확정 구간)**
- 현실에서는 **Positive Logic**이 일반적으로 사용됨
---
## 1.2. 디지털 시스템의 장점 — 노이즈 내성
> §1.1에서 디지털 신호가 이산값만 취한다고 했다. §1.2에서는 이 특성이 노이즈 환경에서 갖는 실질적 이점을 설명하고, §1.3의 디지털 하드웨어 소개로 넘어간다.
### 1.2.1 아날로그 vs. 디지털의 노이즈 대응
```
아날로그 신호:
노이즈가 섞이면 원래 파형과 달라짐 → 수신측이 올바르게 해석 불가
디지털 신호:
노이즈가 섞여도 threshold를 넘지 않는 한 0 또는 1로 올바르게 해석
→ 노이즈가 threshold를 초과하지 않으면 수신측은 신호를 동일하게 인식
```
- 핵심: **임계값(Threshold Voltage)** 를 기준으로 0/1 판정
- 이 내성 덕분에 디지털 시스템은 아날로그보다 신뢰성이 높음
---
## 1.3. 디지털 하드웨어의 종류
> §1.2에서 디지털 시스템의 장점을 확인했다. §1.3에서는 실제로 어떤 형태의 디지털 하드웨어가 존재하는지 분류하고, §1.4의 트랜지스터 및 집적 회로 기술로 연결한다.
### 1.3.1 디지털 시스템의 분류
```mermaid
graph TD
A[디지털 하드웨어] --> B[범용 General Purpose]
A --> C[특수 목적 Special Purpose]
B --> B1[PC, 스마트폰, 태블릿, 디지털 TV/카메라 등]
C --> C1[NPU / Accelerator]
C --> C2[ASIC]
C --> C3[FPGA]
```
### 1.3.2 ASIC — Application Specific Integrated Circuit
- 특정 용도에 맞게 **제조 단계에서 확정**된 IC 칩
- 범용이 아닌 하나의 목적을 위해 최적화
- 예시: Google Cloud TPU v2 (180 TFLOPS, 64GB HBM), TPU v3 (420 TFLOPS, 128GB HBM)
- **장점**: 특정 연산에서 극도로 높은 성능·전력 효율
- **단점**: 제조 후 기능 변경 불가, 초기 개발 비용(NRE) 높음
### 1.3.3 FPGA — Field Programmable Gate Array
- 제조 후 **사용자가 직접 회로 구성을 설정**할 수 있는 IC
- "Field-programmable" = 현장에서 프로그래밍 가능
- **장점**: 설계 유연성, ASIC 대비 빠른 프로토타이핑
- **단점**: 동일 기능 ASIC 대비 성능·전력 효율 낮음
### 1.3.4 세 가지 하드웨어 비교
|구분|CPU/GPU (범용)|ASIC|FPGA|
|---|---|---|---|
|유연성|매우 높음|없음|중간|
|성능 (특정 연산)|낮음|최고|중간|
|전력 효율|낮음|최고|중간|
|개발 비용|낮음|매우 높음|중간|
|변경 가능 여부|소프트웨어 변경 가능|불가|재프로그래밍 가능|
---
## 1.4. 집적 회로 기술 — Sand to Silicon
> §1.3에서 다양한 디지털 하드웨어 종류를 보았다. §1.4에서는 이 하드웨어들이 어떻게 만들어지는지, 트랜지스터와 집적 회로 기술의 발전을 살펴보고 §1.5의 Moore's Law로 연결한다.
### 1.4.1 트랜지스터
- **정의**: 전자 신호 및 전력을 증폭하거나 스위칭하는 반도체 소자
- 디지털 회로의 가장 기본 단위 — 0/1 스위칭을 물리적으로 구현
### 1.4.2 트랜지스터 구조의 세대별 진화
```mermaid
graph LR
A[Planar FET<br/>기존 평면형] --> B[FinFET<br/>3D 핀 구조]
B --> C[GAAFET / Nanowire<br/>게이트가 채널 전체 감쌈]
C --> D[MBCFET™ / Nanosheet<br/>더 넓은 채널로 전류 증가]
```
- **Planar FET**: 채널이 기판 표면에 평면으로 존재 → 누설 전류 증가 문제
- **FinFET**: 채널을 3D 핀(Fin) 구조로 세워 게이트가 3면 감쌈 → 누설 감소
- **GAAFET (Nanowire)**: 게이트가 채널 360° 전체를 감쌈 → 더 강한 전류 제어
- **MBCFET™ (Nanosheet)**: 여러 장의 나노시트로 채널 면적 확대 → 전류량 증가
- TSMC의 5nm 공정은 FinFET 기반, Samsung 3nm는 GAA 아키텍처 적용
### 1.4.3 From Sand to Silicon
모래(SiO₂)에서 순수 실리콘을 추출 → 웨이퍼 제조 → 리소그래피 → 식각 → 도핑 → 패키징 순으로 칩이 완성된다.
---
## 1.5. Moore's Law — 집적도의 지수적 성장
> §1.4에서 트랜지스터 기술의 발전 방향을 확인했다. §1.5는 그 발전 속도를 수치로 보여주는 Moore's Law를 다루고, §1.6의 설계 흐름(Design Flow)으로 넘어간다.
### 1.5.1 Moore's Law 정의
- 제안자: **Gordon Earle Moore** (Intel 공동 창립자)
- 1965년 예측, Carver Mead(Caltech)가 "Moore's Law"로 명명
> **칩 위의 트랜지스터 수는 약 18~24개월마다 2배씩 증가한다.**
### 1.5.2 트랜지스터 수 증가 추이
|연도|공정 크기|Transistors/cm²|Transistors/chip|
|---|---|---|---|
|2006|78 nm|283 M|2,430 M|
|2010|45 nm|714 M|6,122 M|
|2012|36 nm|1,113 M|9,718 M|
|2020 (TSMC 7nm)|7 nm|6,537 M (GA100)|54 B|
|2020 (TSMC 5nm)|5 nm|13,445 M (M1)|16 B (119 mm²)|
### 1.5.3 ⚠️ 트랜지스터 증가 = 성능 향상인가?
단순히 트랜지스터 수만 늘리는 것이 성능 향상을 의미하지는 않는다. 두 가지 관점:
1. **같은 기능, 더 적은 트랜지스터로 구현** → 전력·면적 효율 향상
2. **같은 면적에 더 많은 기능 통합** → 복잡도 증가, 더 많은 기능 제공
```mermaid
graph LR
subgraph 효율화
A1["X₁ → NOT → NAND → Output₁<br/>X₂ ↗"] -->|트랜지스터 최적화| A2["X₁ → NOT → AND → Output₁<br/>X₂ ↗<br/>(더 적은 게이트)"]
end
subgraph 기능확장
B1["X₁ → NOT → OR → Output₁<br/>X₂ ↗"] -->|트랜지스터 추가| B2["X₁ → NOT → OR → Output₁<br/>X₂ ↗<br/>X₃ → NOT → OR → Output₂<br/>X₄ ↗"]
end
```
---
## 1.6. Design Flow — 디지털 하드웨어 설계 프로세스
> §1.5에서 집적 회로 기술의 발전 규모를 보았다. §1.6은 이러한 복잡한 시스템을 실제로 어떻게 설계하는지, 단계별 흐름을 정리하고 §1.7의 시뮬레이터 개념으로 이어진다.
### 1.6.1 Design Flow 전체 구조
![[스크린샷 2026-05-01 오후 3.08.13.png]]
### 1.6.2 각 단계 설명
| 단계 | 설명 |
| -------------------------- | ------------------------------------- |
| **Design Concept** | 설계 목표와 요구사항 정의 |
| **Partition** | 전체 시스템을 독립적인 블록으로 분할 |
| **Design One Block** | 각 블록을 개별 설계 |
| **Define Interconnection** | 블록 간 연결 관계 정의 |
| **Functional Simulation** | **논리적 정확성 검증 (타이밍 무시)** |
| **Physical Mapping** | 논리 회로를 실제 물리 소자로 매핑 |
| **Timing Simulation** | **실제 전파 지연(Propagation Delay) 반영 검증** |
| **Implementation** | ASIC 제조 또는 FPGA 프로그래밍 |
---
## 1.7. Functional Simulator vs. Timing Simulator
> §1.6의 Design Flow에서 두 종류의 시뮬레이션이 등장했다. §1.7에서는 그 차이를 구체적으로 정의한다.
### 1.7.1 Functional Simulator
- 합성(Synthesis) 시 생성된 **논리 표현식**을 기반으로 동작
- 신호가 **즉시(instantaneously)** 전파된다고 가정
- 목적: 회로의 **논리적 정확성** 검증
### 1.7.2 Timing Simulator
![[스크린샷 2026-05-01 오후 3.10.59.png]]
- 전자 회로는 동작에 **시간이 필요**하다는 현실 반영
- **Propagation Delay**: 입력값 변화 후 출력값이 변화하기까지 걸리는 시간
- 지연의 두 가지 원인:
1. 각 논리 소자가 유효한 출력 신호를 생성하는 데 필요한 시간
2. 논리 소자 간을 연결하는 배선(Wire)을 통해 신호가 전파되는 데 필요한 시간
- 목적: **타이밍 위반 여부** 검증 (Setup/Hold Time 등)
### 1.7.3 비교 요약
|구분|Functional Simulator|Timing Simulator|
|---|---|---|
|신호 전파|즉시 (이상적)|실제 지연 반영|
|검증 대상|논리적 정확성|타이밍 정확성|
|적용 단계|Functional Simulation|Timing Simulation (Physical Mapping 후)|
---
## 1.8. 수 체계 — Decimal & Binary
> §1.1에서 디지털 신호가 0과 1만 취한다고 했다. §1.8에서는 이를 수 체계와 연결하여, 10진수와 2진수를 수학적으로 정의하고 상호 변환 방법을 다룬다.
### 1.8.1 위치 기수법 (Positional Number Representation)
공통 원리: 각 자리의 숫자 × (기수)^(자릿수)의 합
$V(N) = d_{n-1} \times r^{n-1} + d_{n-2} \times r^{n-2} + \cdots + d_1 \times r^1 + d_0 \times r^0$
### 1.8.2 10진수 (Decimal)
- 기수(Radix): 10
- 사용 숫자: 0, 1, 2, ..., 9
$V(D) = d_{n-1} \times 10^{n-1} + \cdots + d_1 \times 10^1 + d_0 \times 10^0$
예시:
- $8547 = (8 \times 10^3) + (5 \times 10^2) + (4 \times 10^1) + (7 \times 10^0)$
### 1.8.3 2진수 (Binary)
- 기수(Radix): 2
- 사용 숫자: 0, 1
$V(B) = b_{n-1} \times 2^{n-1} + \cdots + b_1 \times 2^1 + b_0 \times 2^0$
예시:
- $1110_2 = (1 \times 2^3) + (1 \times 2^2) + (1 \times 2^1) + (0 \times 2^0) = 8 + 4 + 2 + 0 = 14_{10}$
- $1000_2 = (1 \times 2^3) + 0 + 0 + 0 = 8_{10}$
### 1.8.4 10진수 → 2진수 변환
**반복 나눗셈(Repeated Division)** 방법: 2로 나누어 나머지를 역순으로 읽는다.
예시: $(857)_{10}$ → 2진수
```
857 ÷ 2 = 428 나머지 1 ← LSB (b₀)
428 ÷ 2 = 214 나머지 0
214 ÷ 2 = 107 나머지 0
107 ÷ 2 = 53 나머지 1
53 ÷ 2 = 26 나머지 1
26 ÷ 2 = 13 나머지 0
13 ÷ 2 = 6 나머지 1
6 ÷ 2 = 3 나머지 0
3 ÷ 2 = 1 나머지 1
1 ÷ 2 = 0 나머지 1 ← MSB (b₉)
역순 읽기: 1101010011₂
검증: 512 + 256 + 64 + 16 + 8 + 1 = 857 ✅
```
### 1.8.5 2진수 → 10진수 변환
**위치 기수법** 직접 적용.
예시: $(100101)_2$ → 10진수
```
1×2⁵ + 0×2⁴ + 0×2³ + 1×2² + 0×2¹ + 1×2⁰
= 32 + 0 + 0 + 4 + 0 + 1
= 37₁₀
```
---
## 1.9. Information Is Bits + Context
> §1.8에서 2진수로 숫자를 표현하는 법을 다뤘다. §1.9에서는 컴퓨터 시스템에서 모든 정보가 비트로 표현된다는 사실과, **같은 비트 패턴이 컨텍스트에 따라 다르게 해석된다**는 핵심 개념을 정리한다.
### 1.9.1 핵심 명제
> 시스템의 모든 정보(디스크 파일, 메모리 프로그램, 사용자 데이터, 네트워크 전송 데이터)는 **비트의 나열**로 표현된다.
서로 다른 데이터 객체를 구별하는 유일한 기준은 **그것을 바라보는 컨텍스트(Context)** 이다.
### 1.9.2 같은 비트 패턴, 다른 해석
예시: `1101 1010 0000 1111 0101 1010 0000 1111` (32비트)
```mermaid
graph TD
BITS["1101 1010 0000 1111 0101 1010 0000 1111<br/>(32-bit)"]
BITS --> A["Unsigned Integer<br/>3,658,439,183"]
BITS --> B["Signed Integer<br/>-636,528,113"]
BITS --> C["Floating Point<br/>-1.0087485535158272E16"]
BITS --> D["Instructions<br/>ARM / RISC / x86 ..."]
BITS --> E["ASCII Char<br/>ÚZ"]
BITS --> F["Unknown Context<br/>Unknown!!"]
```
- **동일한 비트 열**이지만 컨텍스트(자료형, 명령어 집합, 문자 인코딩)에 따라 전혀 다른 의미를 가짐
- 프로그래밍 언어의 **타입 시스템(Type System)** 이 컨텍스트를 명시하는 역할을 담당