[컴퓨터 구조] 명령어 병렬 처리 기법

2023. 3. 17. 00:24기술 창고/CS 지식

728x90
반응형
SMALL

명령어 파이프라인

  • 명령어가 처리되는 과정을 비슷한 시간 간격으로 나누면
    • 명령어 인출
    • 명령어 해석
    • 명령어 실행
    • 결과 저장
  • 여러 명령어가 수행될 때 각 명령어의 위와 같은 과정들이 겹치지 않는다면 CPU는 각 명령어 단계를 동시에 실행할 수 있다고 본다.

  • 이처럼 겹치지않게 여려 명령어를 병렬적으로 수행하는 것을 명령어 파이프라인 이라고 한다.
  • 명령어 파이프라인을 사용하지 않는다면?

  • 한 명령어의 모든 단계가 끝날 때까지 기다리고 그 다음 명령어가 수행되므로 CPU의 속도가 느리다.

 

 

명령어 파이프라인 위험

  • 명령어 파이프라인이 성능 향상에 실패하는 경우

1. 데이터 위험 : 명령어 간의 의존성에 의해 발생되는 위험

  • 모든 명령어를 동시에 처리할 수는 없다.
    (이전 명령어를 완전히 수행해야지만 비로소 실행할 수 있는 경우)

 

 

2. 제어 위험 : 프로그램 카운터의 갑작스러운 변화로 인한 위험

  • 프로그램 카운터가 갑작스럽게 특정 메모리 주소로 변경되면 다음 명령어는 정상적으로 수행되지 않아 발생되는 위험이다.

 

 

 

3. 구조 위험 : 서로 다른 명령어가 같은 CPU부품(ALU, 레지스터)를 사용하려고 할 때 발생되는 위험

 

 

 

슈퍼 스칼라

  • CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조

  • 이론적으로는 파이프라인 개수에 비례하여 처리 속도가 증가하나 파이프라인 위험도의 증가로 인해 파이프라인 개수에 비례하여 처리 속도가 증가하지는 않는다.

 

 

비순차적 명령어 처리

  • 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병렬 처리 기법.
  • 앞서 위에 설명했던 파이프라인 설명에서는 순차적으로 명령어를 처리하는 것을 예로 든 것이다.

# 순차적 명령어 처리
# 명령어의 의존성으로 인해 1번, 2번 명령어의 수행이 완전히 끝날때까지 기다려야 할 경우

  • 위의 이미지에 나온 명령어들이 순차적으로 수행이 된다고 가정했을 때, 3번의 명령어는 1번과 2번의 명령어가 온전히 수행이 되어야지 반영이 되는 명령어다.
    따라서 3번 명령어는 굳이 3번째로 명령어가 수행될 필요는 없으며 맨 마지막에 수행되어도 상관없을 것이다.

 

# 비순차적 명령어 처리
# 3번 명령어를 후순위로 미뤄둔 비순차적 명령어 처리

  • 따라서 처리 속도를 위해서는 파이프라인이 유지되는 것이 중요하며, 파이프라인이 끊기지 않기 위해 비순차적으로 명령어를 처리하는 것이 중요하다.
  • 아무 명령어나 바꿀 수 있는 것이 아니라 의존성이 존재하지 않는 명령어에 한해 바꿔서 처리하는 방식을 비순차적 명령어 처리라고 한다.
728x90
반응형
LIST