검색
회원가입로그인
AI와 함께 공부하기 : 컴퓨터 구조

CPU: Pipeline 은 무엇인가?

파이프라인의 동작 원리: 조립 라인 비유

파이프라인의 동작은 자동차 공장의 조립 라인에 비유하면 가장 이해하기 쉽습니다.

  • 단일 작업자 방식 (단일 사이클 프로세서): 작업자 한 명이 자동차 한 대를 처음부터 끝까지 (부품 조립, 도색, 검사 등 모든 공정) 혼자서 다 완성합니다. 한 대가 완전히 끝나야 다음 대를 시작할 수 있습니다.

    • 단점: 작업자가 다음 공정을 기다리는 동안 이전 공정 장비는 놀게 됩니다. 전체 생산 속도가 가장 느린 공정에 의해 제한됩니다.

  • 조립 라인 방식 (파이프라인 프로세서): 여러 작업자가 각각 다른 공정을 전담합니다.

    • 1번 작업자: 부품 조립 (1단계)

    • 2번 작업자: 도색 (2단계)

    • 3번 작업자: 검사 (3단계)

    • 자동차 한 대가 1번 작업자에게서 완성되면, 1번 작업자는 다음 자동차를 시작하고, 첫 번째 자동차는 2번 작업자에게로 넘어갑니다. 동시에 1번 작업자는 두 번째 자동차를 작업하고, 2번 작업자는 첫 번째 자동차를 작업합니다.

    • 결과: 처음 자동차가 완성되는 데는 이전과 동일한 시간이 걸리지만, 일단 라인이 가동되면 매 순간 새로운 자동차가 한 대씩 완성됩니다. 전체적인 생산량이 폭발적으로 늘어납니다.

MIPS 5단계 파이프라인의 시간별 동작 시퀀스

MIPS의 5단계 파이프라인 (IF, ID, EX, MEM, WB)에 이 조립 라인 비유를 적용하여, 여러 명령어(I1, I2, I3, I4, I5...)가 어떻게 동시에 실행되는지 클럭 사이클(Cycle)별로 살펴보겠습니다. 각 클럭 사이클은 가장 긴 단계의 시간(예: 200 ps)과 동일합니다.

클럭 사이클 (Cycle)Stage 1 (IF)Stage 2 (ID)Stage 3 (EX)Stage 4 (MEM)Stage 5 (WB)
1I1 (명령어 인출)
2I2 (명령어 인출)I1 (해독/레지스터)
3I3 (명령어 인출)I2 (해독/레지스터)I1 (실행)
4I4 (명령어 인출)I3 (해독/레지스터)I2 (실행)I1 (메모리 접근)
5I5 (명령어 인출)I4 (해독/레지스터)I3 (실행)I2 (메모리 접근)I1 (레지스터 쓰기)
6...I5 (해독/레지스터)I4 (실행)I3 (메모리 접근)I2 (레지스터 쓰기)
7......I5 (실행)I4 (메모리 접근)I3 (레지스터 쓰기)

설명:

  • 클럭 사이클 1: 첫 번째 명령어 I1IF 단계에 진입하여 명령어 메모리에서 인출됩니다.

  • 클럭 사이클 2: I1은 다음 파이프라인 레지스터(IF/ID)를 통과하여 ID 단계에 진입하고 해독됩니다. 동시에, 두 번째 명령어 I2IF 단계에 진입하여 인출됩니다.

  • 클럭 사이클 3: I1EX 단계에서 실행되고, I2ID 단계에서 해독되며, I3IF 단계에서 인출됩니다.

  • 클럭 사이클 4: I1MEM 단계로, I2EX 단계로, I3ID 단계로, I4IF 단계로 각각 한 칸씩 이동합니다.

  • 클럭 사이클 5: I1은 마침내 WB 단계에서 완료되어 결과를 레지스터에 씁니다. 동시에 I2MEM, I3EX, I4ID, I5IF 단계를 수행합니다.

    • 이 시점부터는 이상적인 경우, 매 클럭 사이클마다 하나의 명령어가 완료됩니다. (I1이 완료된 클럭 사이클 5에서 I2MEM 단계이므로, 다음 클럭 사이클 6에서 I2가 완료됩니다.)

파이프라인의 핵심 요소와 원리

  1. 동시성 (Concurrency): 여러 명령어가 파이프라인의 서로 다른 단계에서 동시에 실행됩니다. 각 단계는 해당 명령의 특정 부분만 처리합니다.

  2. 분할 (Partitioning): 명령어 실행을 여러 개의 독립적인 작은 단계로 나눕니다. 각 단계는 특정 하드웨어 자원을 사용합니다.

  3. 병렬 실행 (Parallel Execution): 각 단계는 서로 다른 명령어를 동시에 처리하므로, 전체 명령어 처리율(Throughput)이 향상됩니다.

  4. 파이프라인 레지스터 (Pipeline Registers / Latches): 각 단계 사이에 위치하여, 이전 단계의 출력값을 저장하고 다음 단계로 전달합니다. 이는 단계 간의 동기화와 독립적인 작동을 가능하게 합니다. 각 클럭 사이클의 끝에서 이 레지스터들의 내용이 업데이트됩니다.

  5. 클럭 주기 단축: 전체 명령어가 하나의 긴 클럭 주기 안에 실행되는 단일 사이클 프로세서와 달리, 파이프라인 프로세서의 클럭 주기는 가장 긴 단일 단계의 시간으로 결정됩니다. 이는 프로세서가 더 높은 클럭 주파수에서 작동할 수 있게 하여 전체적인 성능을 높입니다.

장점:

  • 높은 처리율 (High Throughput): 단위 시간당 더 많은 명령어를 완료할 수 있습니다.

  • 클럭 주파수 증가: 각 단계가 더 짧은 시간 안에 완료되므로 더 빠른 클럭 속도로 동작할 수 있습니다.

단점:

  • 해저드 (Hazard) 발생 가능성: 명령어 간의 종속성이나 자원 충돌로 인해 파이프라인의 흐름이 방해받을 수 있습니다. (데이터 해저드, 제어 해저드, 구조 해저드)

  • 하드웨어 복잡성 증가: 파이프라인 레지스터, 해저드 감지/해결 로직(포워딩, 스톨), 제어 유닛의 복잡성 등이 추가됩니다.

  • 첫 명령어의 긴 지연 시간 (Latency): 첫 번째 명령어가 완료되는 데 걸리는 시간(파이프라인 깊이 * 클럭 사이클 시간)은 단일 사이클 프로세서와 동일하거나 더 길 수 있습니다. (그러나 전체적인 처리율이 중요)


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기