![[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)** 이 컨텍스트를 명시하는 역할을 담당