[System] CISC / RISC

HenryHong·2022년 8월 16일

system

목록 보기
1/1
post-thumbnail

CPU를 이야기할 때 자주 나오는 키워드가 CISC와 RISC다. 둘 다 ISA(Instruction Set Architecture, 명령어 집합 구조)를 어떻게 설계할지에 대한 방식이다.


1. CISC / RISC 한 줄 정의

  • CISC (Complex Instruction Set Computer)
    복잡하고 다양한 명령어를 많이 제공하는 ISA. 한 명령어가 비교적 “큰 일”을 처리할 수 있다.
  • RISC (Reduced Instruction Set Computer)
    단순하고 규칙적인 명령어를 적게 제공하는 ISA. 작은 명령어들을 많이 묶어서 일을 처리하는 방식에 가깝다.

둘 다 “CPU가 이해하는 언어를 어떻게 디자인할까?”에 대한 서로 다른 철학이라고 보면 된다.


2. CISC의 특징

CISC는 “명령어를 복잡하게 만들어서, 한 번에 많은 일을 하도록 하자”에 가까운 접근이다.

  • 복잡하고 다양한 명령어

    • 수십~수백 개 명령어, 다양한 주소 지정 모드 지원.
    • 예: 하나의 명령어로 메모리에서 값 읽고, 연산하고, 다시 메모리에 쓰기까지 처리.
  • 가변 길이 명령어

    • 명령어마다 길이가 다르다(1바이트, 2바이트, 3바이트…).
    • 코드 크기를 줄이기는 좋지만, 디코딩 로직이 복잡해진다.
  • 마이크로코드 기반 제어

    • 복잡한 명령어를 내부적으로 더 작은 단계들로 쪼개서 실행하는 펌웨어(마이크로코드) 사용.
    • ISA를 바꾸지 않고도 내부 구현을 바꾸기 쉬워, 호환성 측면에서 유리하다.
  • 장점

    • 같은 작업을 적은 수의 명령어로 표현할 수 있어서 코드 밀도가 높다.
    • 오래된 명령어와의 하위 호환성을 유지하기 좋다.
  • 단점

    • 명령어 디코딩과 제어 회로가 복잡해지고,
    • 파이프라인·병렬 실행 최적화가 상대적으로 어렵다.
  • 대표 예시

    • x86, x86-64 계열 CPU (인텔, AMD).

3. RISC의 특징

RISC는 “명령어를 단순하게 만들고, 대신 빠르게 많이 돌리자”에 가까운 접근이다.

  • 단순하고 적은 명령어

    • 기본 연산들은 거의 레지스터 간 연산으로 제한.
    • 메모리 접근은 Load / Store 명령에만 허용하는 구조가 많다.
  • 고정 길이 명령어

    • 대부분 명령어 길이가 일정(예: 4바이트).
    • 디코더를 단순하게 만들 수 있고 파이프라인 설계에 유리하다.
  • 하드와이어드 제어

    • 단순한 명령어들을 논리 회로로 직접 제어하는 구조 사용.
    • 마이크로코드 의존도가 낮다.
  • 파이프라이닝 / 병렬 실행에 유리

    • 명령어 포맷이 규칙적이라, 파이프라인·슈퍼스칼라·Out-of-order 실행 최적화가 쉽다.
    • 전력 효율이 좋아 모바일·임베디드에서 강세다.
  • 장점

    • 디코더·제어부가 단순해 클럭을 높이거나 파이프라인을 깊게 가져가기 좋다.
    • 전력 대비 성능이 좋아 배터리 기반 기기에 적합하다.
  • 단점

    • 같은 일을 하려면 더 많은 명령어가 필요해 코드 길이가 길어질 수 있다.
    • ISA 레벨에서 보면 기능이 단순해서, 같은 역할을 하려면 컴파일러/프로그래머가 더 많은 조합을 만들어야 한다.
  • 대표 예시

    • ARM, RISC‑V, MIPS, SPARC 등.

4. CISC vs RISC 한 눈에 비교

구분CISCRISC
철학복잡한 명령어, 적은 명령어 개수로 많은 일 처리단순한 명령어, 빠르게 많이 실행
명령어 수많음 (수십~수백 개)적음 (핵심 소수 + 확장)
명령어 길이가변 길이고정 길이인 경우가 많음
메모리 접근연산 명령어에서 직접 메모리 접근 가능Load/Store 구조 선호
제어 방식마이크로코드 기반 제어 많음하드와이어드 제어 비중이 큼
디코딩/제어 복잡도복잡단순
파이프라이닝/병렬 실행상대적으로 어려움설계가 유리함
코드 크기짧을 수 있음길어질 수 있음
전력/효율상대적으로 높은 전력, 복잡한 회로전력 효율 좋고 모바일/임베디드에 유리
대표 ISAx86, x86-64ARM, RISC‑V, MIPS 등

5. 현대 관점에서 한 가지 더

요즘 CPU는 “순수 CISC vs 순수 RISC”로 딱 잘라 나누기보다는, 서로의 장점을 섞어 쓰는 쪽에 가깝다.

  • x86 계열(CISC ISA)은
    • 외형상 복잡한 CISC 명령어를 제공하지만,
    • 내부적으로는 RISC 스타일의 마이크로 연산(micro‑ops)으로 쪼개서 파이프라인에 태우는 구조가 일반적이다.
  • ARM·RISC‑V 같은 RISC 계열 ISA도
    • 세대가 지나면서 다양한 확장 명령어(SIMD, 암호화, 벡터 등)를 붙이며
    • 단순한 “소수의 명령어만 있는 ISA”와는 거리가 점점 멀어지고 있다.

실제 개발자 입장에서는 “내 코드가 CISC인지 RISC인지”보다,

  • 어떤 ISA 위에서 돌아가는지(예: x86 vs ARM),
  • 그 ISA가 제공하는 명령어/특성을 컴파일러·런타임·JIT이 어떻게 활용하는지,
    이 쪽을 더 신경 쓰게 되는 편이다.
profile
주니어 백엔드 개발자

0개의 댓글