본문 바로가기

[하드웨어 뜯어보기] CPU #11 - 슈퍼스칼라(Superscalar), 여러 손으로 동시에 일하는 두뇌

📑 목차

    여러 개의 명령을 동시에 처리하는 CPU의 ‘멀티태스킹 본능’

    핵심요약
    슈퍼스칼라(Superscalar)는 CPU가 한 클럭에 여러 개의 명령을 병렬로 실행하도록 설계된 구조입니다.
    즉, 한 손이 아닌 여러 손으로 동시에 일을 처리하는 두뇌와 같습니다.
    파이프라인이 ‘작업을 나누는 기술’이었다면, 슈퍼스칼라는 그 작업들을 동시에 여러 줄로 처리하는 기술입니다.

    Superscalar
    Superscalar


    1. 개념 설명 - “CPU는 두 개 이상의 손으로 일한다”

    파이프라인(Pipeline)은 CPU가 명령을 여러 단계로 나누어 순차적으로 겹쳐 실행하는 기술이었습니다.
    그런데 이 구조에서도 한 번에 하나의 명령 흐름만 처리할 수 있었습니다.

    슈퍼스칼라 구조는 이 한계를 뛰어넘습니다.
    CPU 안에 여러 개의 명령어 실행 유닛(Execution Unit) - 즉, ALU, FPU, AGU 등을 복수로 배치해
    하나의 클럭 사이클 동안 여러 명령을 동시에 실행합니다.

    예를 들어,

    • 첫 번째 ALU가 덧셈을 수행하는 동안,
    • 두 번째 ALU는 비교 연산을,
    • FPU는 실수 연산을 처리할 수 있습니다.

    이처럼 CPU는 단일 파이프라인이 아니라 복수의 파이프라인을 병렬로 운용하며, 이를 통해 처리량(Throughput)을 폭발적으로 높입니다.

    핵심 문장: 슈퍼스칼라는 “한 번에 여러 명령을 동시에 실행하는 병렬 처리 구조”다.


    2. 핵심 구조와 작동 원리

    1) 명령어 디코더(Decoder) 확장

    슈퍼스칼라 CPU는 클럭당 2개 이상(보통 2~8개)의 명령어를 동시에 인출(Fetch)하고 해석(Decode)합니다.
    명령어 디코더는 각 명령의 실행 유닛을 판단하여, 서로 충돌하지 않는 명령들을 병렬로 배치합니다.

    2) 발행(Dispatch) 및 발행 큐(Issue Queue)

    명령어가 디코딩된 뒤에는 발행 로직(Dispatcher) 이 각 실행 유닛에 적절히 분배합니다.
    이때, 종속성(Dependency)이 없는 명령만 동시에 실행되며, 데이터 충돌을 피하기 위해 레지스터 리네이밍(Register Renaming) 이 함께 사용됩니다.

    3) 실행 유닛(Execution Units) 다중화

    각 실행 유닛은 서로 독립적으로 작동합니다.
    예를 들어 인텔의 Pentium Pro는 정수 파이프라인 2개 + 부동소수점 파이프라인 1개를 동시에 운용해
    세 가지 종류의 명령을 한 클럭에 병렬 실행할 수 있었습니다.

    4) 결과 결합(Write Back)

    모든 유닛의 연산이 끝나면, 결과는 순서에 맞게 리오더 버퍼(Reorder Buffer)에 정렬되어 레지스터로 기록됩니다.
    이는 명령이 동시에 실행되어도 프로그램의 논리적 순서를 유지하기 위한 장치입니다.

    핵심 문장: 슈퍼스칼라 구조는 “복수의 실행 유닛을 병렬로 운용하여 처리량을 극대화하는 설계”다.


    3. 비유하자면 - “두 손, 두 눈, 하나의 두뇌”

    사람이 밥을 먹으면서 동시에 대화를 나누고, 손으로 스마트폰을 만질 수 있는 것처럼
    CPU도 여러 작업을 ‘의식적으로 동시에’ 수행합니다.

    하지만 모든 일을 완벽히 병행할 수는 없습니다.
    예를 들어, 왼손이 숟가락을 들고 있을 때 오른손이 그릇을 밀면 충돌이 일어날 수 있죠.
    CPU도 마찬가지로, 명령어 간 의존성이 있을 경우엔 동시에 실행할 수 없습니다.

    그래서 슈퍼스칼라 CPU는 의존성 검사(Dependency Check)를 통해 “충돌 없는 작업만 병렬 실행”합니다.
    이는 마치 두 사람이 한 주방에서 부딪히지 않도록 동선을 조정하는 것과 같습니다.

    핵심 문장: 슈퍼스칼라는 ‘협업하는 두뇌’로, 여러 손이 한 머리 아래에서 조화롭게 일한다.


    4. 기술 발전 과정 - Pentium에서 Zen까지

    - 초창기: 인텔 Pentium (1993)

    인텔의 Pentium은 대표적인 초창기 슈퍼스칼라 CPU로,
    두 개의 정수 파이프라인(U와 V)을 통해 한 클럭에 최대 두 개의 명령어를 실행할 수 있었습니다.
    이는 기존 486 세대 대비 처리량을 1.5배 이상 향상했습니다.

    - 중기 발전: Out-of-Order + 슈퍼스칼라

    1995년 이후 등장한 Pentium Pro, AMD K5 등은 슈퍼스칼라 구조에
    Out-of-Order Execution(명령 재정렬) 기능을 결합했습니다.
    이로써 CPU는 단순히 여러 명령을 동시에 처리하는 것을 넘어,
    ‘실행 순서를 유연하게 바꾸어’ 효율을 극대화하기 시작했습니다.

    - 현대 CPU: Zen, Core, Apple M 시리즈

    현대의 AMD Zen 4, 인텔 Alder Lake, Apple M3 같은 마이크로아키텍처는
    각 코어마다 4~6개의 실행 유닛을 갖춘 초고성능 슈퍼스칼라 구조를 채택합니다.
    여기에 분기 예측, 명령 재정렬, 벡터 연산(SIMD)까지 더해져
    CPU는 하나의 두뇌로서 수십 개의 명령을 실시간으로 분산 처리합니다.

    핵심 문장: 슈퍼스칼라는 현대 CPU 성능 향상의 근간이며, 이후 모든 기술(분기 예측·Out-of-Order)의 토대가 되었다.


    5. 오늘날의 활용 - 스마트폰부터 AI까지

    • 스마트폰 SoC (ARM Cortex-X 시리즈)
      ARM 기반 코어들은 적은 전력으로도 다중 파이프라인을 운용하여 모바일 환경에서도 초당 수십억 개의 명령을 처리합니다.
    • 서버·AI 칩
      AMD EPYC, Intel Xeon과 같은 서버 CPU는
      슈퍼스칼라 구조를 기반으로 벡터 연산(SIMD) 및 병렬 스레드(SMT)와 결합하여
      대규모 AI 모델 학습에도 사용됩니다.
    • GPU와의 연결점
      GPU의 수천 개 연산 유닛도 결국 “극단적으로 확장된 슈퍼스칼라 개념”이라 볼 수 있습니다.
      다만 GPU는 명령 단위 병렬이 아니라 데이터 단위 병렬성(Data Parallelism)에 초점을 둡니다.

    핵심 문장: 슈퍼스칼라 개념은 오늘날 모든 병렬처리 하드웨어의 원형이다.


    6. 요약

    구분 내용
    개념 한 클럭에 여러 명령을 병렬 실행하는 구조
    핵심 요소 다중 디코더, 복수 실행 유닛, 발행 로직
    장점 처리량 증가, 자원 활용 극대화
    단점 복잡한 제어 로직, 전력 소비 증가
    대표 예시 Pentium, Zen, Core, Apple M 시리즈

    요약 문장: 슈퍼스칼라는 ‘병렬 명령 실행의 시대’를 연 기술로, CPU의 진화에 결정적 전환점을 남겼다.


    7. 다음 편 예고

    다음 편에서는 슈퍼스칼라 구조가 ‘효율’을 극대화하기 위해 명령의 순서마저 재배치하는 기술로 진화한 이야기를 다룹니다.

     

    다음 글 : [컴퓨터 과학] - [하드웨어 뜯어보기] CPU #12 - 명령 순서 재배치(Out-of-Order Execution), 순서보다 효율을 선택하는 두뇌

     

    [하드웨어 뜯어보기] CPU #12 - 명령 순서 재배치(Out-of-Order Execution), 순서보다 효율을 선택하는 두

    “순서를 지키는 것보다 일을 끝내는 게 먼저다” - 효율을 우선하는 CPU의 판단력핵심요약명령 순서 재배치(Out-of-Order Execution, OOOE)은 CPU가 프로그램의 명령 순서 대신 효율적인 실행 순서를 스

    snappytory.com