명령어 병렬 처리 기법

명령어 파이프라인

  • 명령어 인출 → 명령어 해석 → 명령어 실행 → 결과 저장
  • 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있다.
    • 예를 들어 CPU는 한 명령어를 ‘인출’하는 동안에 ‘실행’을 할 수 있고, 실행을 하는 중에는 ‘저장’을 할 수 있다.

img.png

  • 그림으로 나타내면 이러하다
  • 명령어를 겹쳐서 수행하면 명령어를 하나하나 실행하는 것보다 더 효율적으로 처리를 할 수 있다.
  • 이렇게 파이프라인에 넣고, 동시 처리하는 기법을 명령어 파이프라인 기법이라고 한다.

파이프라인 위험

  • 파이프 라인을 통해서 일을 병렬처리 하면 빠르게 처리할 수는 있지만 3가지 위험이 있다.

데이터 위험

  • 데이터 위험은 명령어 간 데이터 의존성 때문에 발생하게 된다.
    • 예를 들어 명령어1, 명령어2가 있다고 해보자
      • 명령어2는 명령어1이 끝나야 실행이 가능하다.
      • 따라서 명령어 1 실행이 끝나기 전에 명령어 2를 인출하면 원치 않는 값이 출력되므로 명령어2는 명령어1에 의존한다고 볼 수 있다.
      • 따라서 의존적인 두 명령어를 동시에 실행하는 것은 파이프라인이 제대로 작동하지 않을 수 있다.

제어위험

  • 분기 여부가 결정되기 전에 파이프라인이 다음 명령어를 잘못 가져오면 문제 발생

구조적 위험

  • 하드웨어 자원이 부족해서 명령어들이 동시에 실행될 수 없는 경우
    • 하나의 메모리를 명령어 fetch와 데이터 read/write가 동시에 사용하려고 할 때 충돌

비순차적 명령어 처리

  • 순차적 명령어 순서와 달리, 의존성이 없는 명령어를 먼저 실행함으로써 파이프라인 정지를 방지하고 CPU 자원을 효율적으로 활용하는 기법
    • 파이프라인 구조에서는 어떤 명령어가 데이터를 기다리거나 메모리 접근 때문에 지연되면, 뒤에 있는 명령어들까지 멈추는 일이 생긴다.
    • 이런 스톨을 방지하고 성능을 유지하기 위해 등장한 기술이 비순차적 실행
    • 의존성이 있는 명령어는 기다리고, 독립적인 다른 명령어를 먼저 실행한다.

Reference

https://m.yes24.com/Goods/Detail/111378840



© 2022. by taewoo

Powered by taewoo