
FPGA vs ASIC: 레고와 프라모델의 차이
비트코인 채굴기들이 처음엔 그래픽카드(GPU)를 쓰다가 왜 ASIC으로 넘어갔을까? '유연함(FPGA)'과 '극한의 효율(ASIC)'의 대결.

비트코인 채굴기들이 처음엔 그래픽카드(GPU)를 쓰다가 왜 ASIC으로 넘어갔을까? '유연함(FPGA)'과 '극한의 효율(ASIC)'의 대결.
맥북 배터리는 왜 오래 갈까? 서버 비용을 줄이려면 AWS Graviton을 써야 할까? 복잡함(CISC)과 단순함(RISC)의 철학적 차이를 정리해봤습니다.

AI 시대의 금광, 엔비디아 GPU. 도대체 게임용 그래픽카드로 왜 AI를 돌리는 걸까? 단순 노동자(CUDA)와 행렬 계산 천재(Tensor)의 차이로 파헤쳐봤습니다.

빠른 SSD를 샀는데 왜 느릴까요? 1차선 시골길(SATA)과 16차선 고속도로(NVMe). 인터페이스가 성능의 병목이 되는 이유.

LP판과 USB. 물리적으로 회전하는 판(Disc)이 왜 느릴 수밖에 없는지, 그리고 SSD가 어떻게 서버의 처리량을 100배로 만들었는지 파헤쳐봤습니다.

초창기 비트코인은 CPU로 캤습니다. 그러다 GPU로 넘어갔고, 어느 순간 '채굴기(ASIC)'라는 이상한 기계들이 등장했습니다. 그냥 컴퓨터로 캐면 안 되나? 왜 전용 기계를 만들지?
이 궁금증을 풀기 위해 반도체의 두 가지 끝판왕, FPGA와 ASIC을 공부했습니다. 처음엔 "그냥 둘 다 칩 아니야?"라고 생각했는데, 알고 보니 레고 블록과 사출 금형만큼 다른 물건이었습니다.
그리고 이 둘의 차이를 이해하고 나니, 테슬라가 왜 자율주행 칩(FSD)을 직접 만들었는지, 구글이 왜 TPU를 개발했는지, 왜 비트코인 채굴기 회사가 한 번 알고리즘이 바뀌면 파산하는지가 다 이해가 됐습니다.
처음 FPGA와 ASIC 개념을 접했을 때, 솔직히 차이를 몰랐습니다. 둘 다 "반도체 칩"이고, 둘 다 "계산을 수행"하잖아요?
그런데 공부를 하다 보니, "칩을 만드는 방식" 자체가 완전히 달랐습니다.
FPGA는 이미 만들어진 칩의 내부 회로를 프로그래밍으로 바꾸는 겁니다. 칩 자체는 그대로고, 그 안에 들어있는 로직 게이트(AND, OR, NOT 같은)들의 연결 방식만 소프트웨어로 수정하는 거죠.
반면 ASIC은 처음부터 회로를 설계해서 실리콘 웨이퍼에 구워버립니다. 한 번 만들면 끝. 수정 불가능.
이걸 이해하고 나니까, "FPGA는 범용 칩이고, ASIC은 맞춤 칩"이라는 말이 와닿았습니다.
FPGA(Field-Programmable Gate Array)는 이름 그대로 "현장에서 프로그래밍 가능한(고쳐 쓸 수 있는) 칩"입니다.
FPGA 내부를 들여다보면, LUT(Look-Up Table)라는 작은 메모리 덩어리들이 수만~수십만 개 들어있습니다. 이 LUT들은 "조합 논리 함수"를 저장할 수 있습니다.
예를 들어, 4-input LUT 하나는 이런 진리표(Truth Table)를 저장할 수 있죠:
| A | B | C | D | 출력 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 1 |
| ... | ... | ... | ... | ... |
이 LUT들을 CLB(Configurable Logic Block)라는 단위로 묶어놓고, 그 CLB들을 "라우팅 패브릭(Routing Fabric)"이라는 전선 그물망으로 연결합니다.
결국 FPGA는 "미리 만들어 둔 레고 블록(LUT)과 레고 연결선(Routing)을 조합해서 원하는 회로를 만드는 칩"이었습니다.
FPGA를 프로그래밍할 때는 HDL(Hardware Description Language)이라는 언어를 씁니다. 대표적으로 Verilog나 VHDL이 있죠.
간단한 2-input AND 게이트를 Verilog로 만들면 이렇습니다:
module and_gate(
input wire a,
input wire b,
output wire y
);
assign y = a & b;
endmodule
이 코드를 FPGA에 올리면, 칩 내부의 LUT 하나가 "a와 b를 입력받아서 AND 연산 결과를 내보내는" 회로로 변합니다.
"코드를 작성하면 칩의 회로가 바뀐다"는 게 처음엔 신기했습니다. 소프트웨어 개발자인 저는 "코드는 메모리에 저장되는 거"라고 생각했는데, FPGA는 "코드가 하드웨어 회로 자체로 구현되는 것"이었습니다.
FPGA를 스위스 아미 나이프에 비유하면 딱입니다.
FPGA도 마찬가지입니다.
그럼 FPGA는 어디에 쓰일까요? 제가 조사한 바로는:
결국 FPGA는 "유연함이 필요한 곳"에 쓰입니다.
ASIC(Application-Specific Integrated Circuit)은 "특정 용도 전용 칩"입니다.
비트코인 채굴기(Antminer)가 대표적입니다. 이 칩은 SHA-256 해시 계산 말고는 아무것도 못 합니다. 윈도우도 못 띄우고 지뢰찾기도 못 합니다.
대신, 그 "SHA-256 계산" 하나만큼은 FPGA보다 100배 빠르고 전기를 1/100만 먹습니다.
ASIC을 만드는 과정은 소프트웨어와 완전히 달랐습니다. 제가 이해한 흐름은 이렇습니다:
이 과정이 최소 6개월에서 2년 걸립니다. 그리고 한 번 테이프아웃하면 수정 불가능입니다.
만약 설계에 버그가 있으면? 칩 전부 폐기하고 처음부터 다시 만들어야 합니다. 이게 "칩 한 번 잘못 만들면 회사 망한다"는 말이 나온 이유입니다.
ASIC 설계에는 NRE(Non-Recurring Engineering) 비용이 듭니다. "한 번만 내는 비용"이라는 뜻인데, 여기엔:
최신 공정일수록 마스크 비용이 기하급수적으로 올라갑니다. 28nm는 $500K, 7nm는 $5M, 3nm는 $15M 이상이라고 합니다.
그래서 7nm ASIC을 만들려면 NRE만 $50M~$500M 들어갑니다. 당연히 개인이나 작은 회사는 못 만들죠.
대신 100만 개를 찍어내면 개당 가격은 $1~$10로 떨어집니다. 이게 ASIC의 경제학입니다.
FPGA와 ASIC의 차이를 다시 한 번 비유하면:
제가 서비스를 만들 때도 비슷한 선택을 했던 기억이 납니다. 처음엔 "범용 프레임워크(Django)"로 빠르게 MVP 만들고, 나중에 "최적화된 마이크로서비스(Go)"로 갈아탔죠. FPGA → ASIC과 정확히 같은 흐름이었습니다.
제가 FPGA와 ASIC을 공부하게 된 계기였던 비트코인 채굴 역사를 정리해봤습니다:
이 흐름을 보면서, "범용 → 전문화"는 기술 발전의 필연적인 방향이라는 걸 느꼈습니다. 소프트웨어도, 하드웨어도, 비즈니스도 결국 같은 길을 가더라고요.
제가 정리한 선택 기준입니다:
같은 작업을 소프트웨어와 FPGA로 구현하면 어떻게 다른지 보겠습니다.
def multiply_add(a, b, c):
result = a * b + c
return result
# 실행 - CPU가 명령어 순차 실행
# 1. a * b 계산
# 2. 결과 + c 계산
# 3. return
module multiply_add(
input wire [31:0] a,
input wire [31:0] b,
input wire [31:0] c,
output wire [31:0] result
);
wire [31:0] product;
assign product = a * b;
assign result = product + c;
endmodule
// 이건 "명령어"가 아니라 "회로 구조"입니다.
// a * b와 + c가 실제 하드웨어로 구현되고,
// 클럭 사이클 1~2개 만에 끝납니다.
차이가 느껴지나요? 소프트웨어는 "CPU에게 뭘 하라고 명령"하는 건데, FPGA는 "칩 자체가 그 연산을 하는 회로가 되는 것"입니다.
그래서 FPGA는 레이턴시가 극도로 낮습니다. 입력 신호가 들어오면 클럭 몇 사이클 만에 결과가 나옵니다. 소프트웨어는 함수 호출, 메모리 접근, 캐시 미스 등으로 수백 사이클 걸리죠.
FPGA와 ASIC의 차이를 공부하면서, "기술 선택은 결국 경제학"이라는 걸 다시 한 번 깨달았습니다.
| 구분 | FPGA | ASIC |
|---|---|---|
| 비유 | 레고 블록 (재조립 가능) | 금형 사출물 (수정 불가) |
| 유연성 | 높음 (언제든 수정 가능) | 없음 (만들면 끝) |
| 초기 비용 | 낮음 ($10K~$100K) | 매우 높음 ($5M~$500M) |
| 개당 가격 | 비쌈 ($100~$10K) | 쌈 ($1~$10, 대량 생산 시) |
| 전력 효율 | 중간 | 최고 (FPGA 대비 10~100배) |
| 개발 시간 | 짧음 (몇 주~몇 달) | 김 (6개월~2년) |
| 적합한 상황 | 프로토타입, 소량, 알고리즘 변화 | 양산, 성능/전력 중요, 알고리즘 확정 |
개발자인 저에게 FPGA는 "코딩 잘못하면 다시 짜면 되는" 소프트웨어 같았고, ASIC은 "버그 하나 있으면 회사 망하는" 하드웨어 제조 같았습니다.
테슬라가 자율주행 칩(FSD)을 직접 만드는 이유도, 인텔 CPU나 엔비디아 GPU(범용 칩)로는 성에 안 차서 자기들만의 ASIC을 깎은 것이란 걸 이해하게 됐습니다.
그리고 비트코인 채굴기들이 왜 그렇게 생겼는지도 이제 압니다. "SHA-256 하나만 극한으로 빠르게"라는 목표에 모든 걸 걸었기 때문입니다.
결국 반도체도, 소프트웨어도, 비즈니스도 다 같은 원리더라고요. 범용으로 시작해서, 규모가 커지면 전문화한다. 그게 FPGA와 ASIC의 이야기였습니다.