Computer Science/Computer Architecture

[Computer Architecture] Enhancing Performance with Pipelining

LeeJaeJun 2024. 3. 3. 18:17
728x90
반응형

Pipelining

복잡한 프로세스를 여러 단계로 나누어 각 단계가 병렬적으로 동작할 수 있도록 함으로써, 전체적인 처리 속도를 향상시키는 방법입니다.

파이프라인 기술은 일련의 데이터 처리 단계를 마치 공장의 조립 라인처럼 연속적으로 배치하여, 한 번에 하나의 명령어만 처리하는 대신 여러 명령어가 동시에 각기 다른 처리 단계를 수행할 수 있도록 합니다.

  • 크게 5가지 동작으로 Fetch, Decode, Execute, Memory Access, Write Back 나눌 수 있고, 하나의 명령어가 Write Back 단계까지 끝나고 다음 명령어를 시작하는 것이 아니라 각 단계마다 일을 배치하는 방식으로 한 명령어가 Fetch가 끝나고 Decode 단계로 들어가면 Fetch 단계에는 그 다음 명령어를 실행합니다.
  • Pipelining은 각각 하나의 일을 처리하는데 latency를 줄이는 것에는 영향을 주지는 못하지만 전체 일의 처리량을 개선하는데 도움을 줄 수 있습니다.
    • 즉, Fetch 등 각 처리 시간을 줄이는 것이 아니라 전체 명령어들을 다 수행하는 시간을 줄이는 것입니다.
  • Stage의 개수만큼 overlap이 되어 빨라질 수 있습니다.(지금은 5개의 단계라고 했으니까 이상적으로는 5배가 빨라진다.)
    • Potential speedup = Number pipeline stages
  • Pipeline rate는 가장 느린 pipeline 단계에 의해서 제한됩니다.
    • 예를 들어, 1번째 단계가 1시간, 2번째 단계가 30분이 걸린다면 2번째 단계가 다 끝나더라도 1번째 단계가 아직 다 안끝났기 때문에 2번째 단계에는 기다려야 한다. 이런 경우, 1시간을 기준으로 파이프라인이 진행되게 됩니다.
  • 따라서 각 단계의 실행 시간이 불균형한 경우 파이프라인을 이용한 속도 증가가 감소될 수 있습니다.
  • 또한 Dependence로 인해서 stall이 발생하면서 pipeline이 지연되는 경우도 생길 수 있습니다.

The Five Stages of Load
Pipelining

 

Ideal Speed Up

  • Imperfect balacne와 pipeline overhead로 인해서 이상적인 speed up이 발생하지 않습니다.

이상적으로는 5배 빨라져야 하지만 실제로 약 4배만 빨라진다.

 

 

RISC-V는 파이프라인

  • 모든 명령어는 길이가 같습니다.
    • Ifetch 및 Decode 단계에 도움이 됩니다.
  • 소수의 명령어 형식 및 고정된 소스 피연산자 필드가 있습니다
    • 피연산자를 읽고 동시에 opcode를 디코드할 수 있습니다.
  • 메모리 피연산자는 로드/스토어에서만 나타납니다
    • Execute 단계에서 메모리 주소를 계산합니다.
  • 피연산자는 메모리에 정렬되어 있어야 합니다
    • 단일 데이터 전송 명령어에 대해 하나의 데이터 메모리 접근만 필요합니다.
728x90
반응형