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

byeol·2023년 3월 15일
0

CPU의 성능을 향상 시키는데 영향을 주는 것은 클럭, 코어, 스레드라는 것을 배웠다. 하지만 한 가지 더 고려해야 할 것은 CPU가 놀지 않도록 작동하게 하는 것이다.

따라서 CPU를 쉬지 않고 작동시키게 하는 기법인 병령 처리 기법에 대해서 알아보고 대표적인 병렬 처리 기법의 3가지에 대해서 배워보자.

🚗🚗🚗🚗🚗

명령어 파이프라인

하나의 명령어가 처리되는 전체 과정을 비슷한 시간 단위로 나누어 본다면 아래 4가지 단계가 될 것이다.
1. 명령어 인출
2. 명령어 해석
3. 명령어 실행
4. 결과값 저장
각 단계가 겹치지 않는다면 CPU는 '각 단계를 동시에 실행'할 수 있다.

이렇게 명령어 파이프라인에 넣고 동시에 처리하는 기법을 명령어 파이프라이닝이라고 한다,

하지만 특정 상황에서는 성능 향상에 실패하는 경우가 있고 그 상황을 파이프라인 위험이라고 한다.

파이프라인 위험

크게 데이터 위험, 제어 위험, 구조적 위험이 있다.

  • 데이터 위험 : 명령어 사이에 의존관계가 있을 때 예를 들어 명령어1을 먼저 실행해야만 명령어 2를 실행할 수 있다. 이 경우에는 각 단계를 동시에 실행할 수 없다
  • 제어 위험 : 프로그램 카운터는 현재 실행중인 명령어의 다음 주소로 갱신되는데 현재 실행중인 명령어에 "60번지로 분기해라"와 같은 내용이 포함되어 있을 때이다. 이럴 경우 각 단계 별로 실행중이었던 명령어들은 버려진다.
  • 구조적 위험 : 서로 다른 명령어가 동시에 자원을 쓰는 경우 발생하며 자원 위험이라고도 한다.

슈퍼스칼라

단일 파이프라인이 아닌 여려 개의 파이프란을 이용하는 구조

슈퍼스칼라 구조로 명령어 처리가 가능한 CPU = 슈퍼스칼라 프로세서 = 슈퍼스칼라 CPU

멀티쓰레드 프로세서는 한번에 여러개의 명령어를 인출하므로 슈퍼스칼라 구조를 사용할 수 있다.

문제는 설계가 까다롭다.
단이 파이브라인보다 파이프라인 위험에 쉽게 노출되기 때문이다.

비순차적 명령어 처리

명령어를 순차적으로 처리하지 않는 합법적인 새치기 기법

의존관계 등을 고려해서 순서를 바꿔서 명령어들이 처리 될수 있도록 하는 기법이다.

profile
꾸준하게 Ready, Set, Go!

0개의 댓글

관련 채용 정보