컴퓨터 구조_7

김현우·2025년 2월 3일

08. Pipelined MIPS - latched execution

Pipelined Microarchitecture and Instruction-Level Parallelism (ILP)

1. Single Cycle vs Multi Cycle Machines

1.1. Single Cycle Machine

  • 하나의 명령어를 실행하는 데 고정된 긴 시간이 필요.
  • 모든 명령어는 동일한 클록 주기 내에서 실행됨.
  • 실행 과정에서 하드웨어 리소스가 비효율적으로 활용됨.
    • 예시:
      • 10개의 명령어 실행 = 10 사이클

1.2. Multi Cycle Machine

  • 명령어를 여러 클록 사이클에 걸쳐 실행함.
  • 실제 필요한 시간만 사용하여 하드웨어 리소스를 효율적으로 활용.
  • 특정 단계에서 사용되지 않는 하드웨어는 Idle(유휴) 상태가 됨.
    • 예시:
      • 1개의 명령어 실행 = 30~40 사이클 (단, 개별 사이클이 짧음)

1.3. 문제점

  • Single Cycle: 한 클록 사이클이 모든 명령어의 최악의 실행 시간을 기준으로 설정됨 → 불필요한 낭비 발생.
  • Multi Cycle: 사이클의 개수가 많아짐 → 유휴 상태를 줄이는 최적화가 필요.

2. Instruction-Level Parallelism (ILP)

2.1. concept

ILP (Instruction-Level Parallelism) 은 하드웨어 리소스를 효율적으로 활용하여 여러 명령어를 동시에 실행하는 방법입니다.
즉, 하나의 명령어를 실행하는 동안 다른 명령어가 유휴 상태가 되지 않도록 병렬로 실행하는 기법입니다.

3. Pipeline Architecture

3.1. 파이프라인 구조

  • 하드웨어 리소스가 유휴 상태가 되는 문제를 해결하기 위해 등장한 개념.
  • 여러 명령어를 동시에 실행하기 위해 각 명령어의 실행 단계를 겹치도록(overlapping) 함.

3.2. Overlapping Execution

  1. 첫 번째 명령어 (Load Word)가 첫 번째 Clock Cycle에서 Fetch 단계 실행.
  2. Fetch 단계가 끝난 후, 결과를 저장소(Latch)에 저장하고 다음 명령어 실행 준비.
  3. 두 번째 Clock Cycle에서는 Load Word 명령어가 Decode 단계를 진행하는 동시에, 다음 명령어(Subtract)가 Fetch 단계를 실행.

Pipelined Microarchitecture and Latched Execution

1. Pipeline Execution & Latched Architecture

1.1. Instruction Overlapping Execution

기존 Multi-cycle 실행 방식과의 차이점

  • Multi-cycle: 하나의 명령어가 모든 단계를 거쳐 실행될 때까지 다음 명령어는 대기.
  • Pipeline: 각 클록 사이클마다 새로운 명령어를 가져오고, 기존 명령어는 다음 단계로 이동.

2. The Role of Latch in Pipeline

Pipeline 실행 중, 서로 다른 명령어의 데이터(rs, rt, rd 값 등)를 유지하기 위한 방법은?
→ 각 실행 단계(Stage) 사이에 Latch(임시 저장소)를 배치하여 데이터 값을 저장.

2.1. Latch의 역할

  • Latch는 입력/출력 값을 저장하는 임시 저장소로, Stage 간 데이터 전달을 담당.
  • Stage 간 독립성을 유지하면서, 실행된 명령어의 결과를 안정적으로 저장.
  • 모든 명령어가 동시에 실행될 수 있도록, 서로 다른 명령어의 값을 분리.

2.2. Latch의 배치

  • 각 클록 사이클 동안:
  1. Input Latch에서 데이터를 읽음.
  2. Stage Execution HW에서 연산 수행.
  3. 결과를 Output Latch에 저장.
  4. 다음 사이클에서 Output Latch의 값이 Input Latch로 전달되어 다음 단계 실행.
  • 이러한 방식으로 각 명령어가 서로 간섭하지 않도록 유지하면서, 병렬 실행이 가능해짐.

3. Performance Comparison: Multi-cycle vs Pipeline

  • 기존 Multi-cycle Execution vs Pipeline Execution 비교

3.1. CPI (Cycles Per Instruction)

  • Multi-cycle에서는 5개의 명령어를 실행하는데 20 사이클이 걸리므로,
    • CPI = 20 / 5 = 4
  • Pipeline에서는 5개의 명령어를 실행하는데 8 사이클이 걸리므로,
    • CPI = 8 / 5 = 1.6
      → CPI가 줄어들어 성능 향상!

3.2. IPC (Instructions Per Cycle)

  • Multi-cycle에서는 20 사이클 동안 5개의 명령어 실행
    • IPC = 5 / 20 = 0.25
  • Pipeline에서는 8 사이클 동안 5개의 명령어 실행
    • IPC = 5 / 8 = 0.625
      → IPC 증가 = 동일한 시간에 더 많은 명령어 실행 가능!'

3.3. 결과 분석

  • Pipeline을 사용하면 CPI 감소 (즉, 실행 속도 증가).
  • 동시에 실행되는 명령어가 많아져 IPC 증가 (즉, CPU 성능 향상).
  • 동일한 명령어 개수를 실행하는데 필요한 클록 사이클 수가 크게 줄어듦.
profile
학생

0개의 댓글