한양과학기술고등학교

에듀테크 프로젝트 대시보드

명령어 집합 구조 — RISC vs CISC

명령어 집합 구조 (Instruction Set Architecture)

CPU가 "이해할 수 있는 말"을 어떻게 설계할 것인가 — 적게, 하지만 강력하게 vs 많게, 하지만 단순하게

한 줄 비유. ISA(Instruction Set Architecture)는 하드웨어와 소프트웨어 사이의 계약서다. 컴파일러(소프트웨어)는 이 계약서에 적힌 명령어만 써서 코드를 만들 수 있고, CPU(하드웨어)는 이 계약서에 적힌 명령어만 실행할 수 있으면 된다. 계약서를 어떻게 쓰느냐 — 조항을 복잡하고 다양하게 vs 단순하고 적게 — 가 바로 CISC vs RISC 논쟁이다.

1. ISA란 무엇인가

명령어 집합(ISA)은 특정 CPU가 실행할 수 있는 명령어의 종류·형식·인코딩 전체를 말한다. 덧셈을 어떤 이진 코드로 표현하는지, 피연산자로 메모리 주소를 직접 쓸 수 있는지, 레지스터는 몇 개인지 — 이 모든 규칙이 ISA에 정의된다. 같은 ISA를 구현한 CPU라면 제조사가 달라도 같은 기계어 프로그램을 실행할 수 있다 (예: x86-64 ISA를 인텔도, AMD도 각자 다른 회로로 구현한다).

ISA를 설계할 때 가장 근본적인 질문은 이것이다 — "명령어 하나가 얼마나 많은 일을 해야 하는가?" 이 질문에 대한 두 가지 상반된 답이 CISC와 RISC다.

🏛️ CISC Complex Instruction Set Computer

"명령어 하나가 복잡한 작업을 통째로 처리하게 하자."

  • 명령어 하나가 메모리 접근 + 연산을 한 번에 수행 가능
  • 명령어 길이가 가변적(1~15바이트, x86 기준)
  • 명령어 종류가 매우 많고(수백~) 주소 지정 방식도 다양
  • 대표 예시: x86 / x86-64 (인텔, AMD)
  • 컴파일러는 짧고 간결한 어셈블리를 생성 → 코드 밀도 높음
  • 대신 CPU 내부 디코더 회로가 매우 복잡해짐
⚙️ RISC Reduced Instruction Set Computer

"명령어는 최대한 단순하게, 대신 빠르고 예측 가능하게 하자."

  • 메모리 접근과 연산이 분리된 load/store 구조
  • 명령어 길이가 고정(대부분 4바이트)
  • 명령어 종류가 적고 형식이 균일 → 디코딩이 단순
  • 대표 예시: ARM, RISC-V (모바일·임베디드·최신 서버)
  • 한 클럭에 한 명령어 완료를 목표 → 파이프라이닝에 유리
  • 대신 같은 작업에 더 많은 명령어가 필요할 수 있음

2. 같은 연산, 다른 어셈블리

"메모리에 있는 두 값을 더해서 다시 메모리에 저장한다"는 똑같은 작업을 CISC와 RISC로 어떻게 다르게 표현하는지 비교해보자. CISC는 ADD 한 줄에 메모리 접근과 연산을 다 넣지만, RISC는 레지스터에 값을 옮긴 뒤(LOAD)에만 연산할 수 있어서 단계가 나뉜다.



  

3. 인터랙티브 데모 — 몇 단계가 필요할까?

연산을 선택하고 "실행"을 누르면, CISC 방식과 RISC 방식이 각각 몇 단계(명령어)를 거치는지 애니메이션으로 보여준다.

🏛️ CISC 방식 메모리-메모리 연산
실행된 명령어 수 0 개
⚙️ RISC 방식 load/store 구조
실행된 명령어 수 0 개
프리셋을 고르고 "실행"을 눌러보세요.
명령어 개수만 보면 RISC가 손해처럼 보인다. 하지만 RISC 명령어는 고정 길이·단순 형식이라 한 클럭에 하나씩, 파이프라인을 거의 멈추지 않고 흐를 수 있다. 반면 CISC의 복잡한 메모리-메모리 명령어는 내부적으로 여러 클럭이 걸리거나 파이프라인을 방해하기 쉽다. "명령어 수"와 "실제 걸리는 시간"은 다른 이야기라는 점이 핵심이다.

4. CISC vs RISC 한눈에 비교

기준CISCRISC
명령어 길이가변 (1~15바이트)고정 (보통 4바이트)
명령어 개수많음 (수백 개, 다양한 주소 지정)적음 (수십~백여 개)
클럭당 명령어(CPI)명령어마다 여러 클럭 소요이상적으로 클럭당 1개 목표
메모리 접근메모리-메모리 연산 가능load/store만 메모리 접근, 연산은 레지스터끼리
파이프라이닝 적합성낮음 (가변 길이·복잡한 디코딩이 방해)높음 (균일한 형식이 유리)
대표 CPUx86 / x86-64 (Intel, AMD)ARM, RISC-V
컴파일러 역할비교적 단순한 코드 생성으로도 충분명령어 스케줄링·레지스터 할당 등 최적화 부담이 큼
하드웨어 복잡도디코더가 복잡 (마이크로코드 사용)디코더가 단순 (회로 면적·전력 절약)

5. 오늘날의 현실 — 경계가 흐려졌다

6. 더 알아보기

이 페이지는 ISA "설계 철학"에 집중했다. 명령어가 CPU 안에서 실제로 어떻게 실행되는지, 그리고 그 실행을 어떻게 겹쳐서 빠르게 만드는지는 아래 페이지에서 이어서 볼 수 있다.

한 줄 정리. ISA는 하드웨어와 소프트웨어의 계약서다. CISC는 "명령어를 복잡하게 만들어 컴파일러의 일을 줄이자"는 철학, RISC는 "명령어를 단순하게 만들어 하드웨어를 빠르고 효율적으로 만들자"는 철학이다. 오늘날의 CPU는 겉으로는 CISC/RISC 딱지를 붙이고 있어도 내부적으로는 서로 닮아가고 있다 — 좋은 아이디어는 결국 진영을 가리지 않고 섞인다.