본문 바로가기
CS/컴퓨터 구조&운영체제

[컴퓨터 구조 &운영체제] 7.명령어 병렬 처리 기법

by supernovaMK 2024. 5. 7.

명령어 파이프라인


동시에 여러 개의 명령어를 겹쳐 실행하는 기법.

명령어 처리 과정을 클럭 단위로 나누어 명령어 인출,해석,실행,결과 저장 등으로 나누어 명령어들을 겹쳐서 실행한다.

 

특정 상황에서는 성능 향상에 실패하는 경우도 있다.

 

파이프라인 위험에는 크게 3가지가 있다.

 

1. 데이터 위험

2. 제어 위험

3. 구조적 위험

 


 

 

데이터 위험

 

명령어 간 '데이터 의존성'에 의해 발생한다. 의존적인 두 명령어를 무작정 동시에 실행하려고 하면 오류가 생길 수 있다.

예를 들어 덧셈의 결과 값을 이용하는 명령어들의 의존관계가 그렇다.

 

제어 위험

 

프로그램 카운터의 갑작스러운 변화에 의해 발생한다. 현재 실행중인 명령어의 다음주소로 갱신 될때 프로그램 실행 흐름이 바뀌어 명령어가 실행 되면서 프로그램 카운터 값에 갑작스러운 변화가 생긴다면 명령어 파이프라인에 미리 가지고 와서 처리 중이였던 명령어들은 아무 쓸모가 없어진다.

 

 

이를 해결하는 방법 중 하나가 분기 예측으로 프로그램이 어디로 분기할지 미리 예측한 후 그 주소를 인출하는 기술이다.

 

구조적 위험

명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 CPU부품을 사용하려고 할때 발생한다.

 

 

 


슈퍼스칼라


CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조를 슈퍼스칼라라고 한다.

 

슈퍼스칼라 구조로 명령어 처리가 가능한 CPU를 슈퍼스칼라 프로세서라고 한다. 반드시는 아니지만 파이프라인 개수에 비례하여 프로그램 처리 속도가 빨라진다.

 

 

 


비순차적 명령어 처리


OoOE라고 줄여 부르며 순차적인 방식이 아닌 비순차적인 방식이다.

 

명령어를 순차적으로만 실행하지 않고 순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 명령어 파이프 라인이 멈추는 것을 방지하는 기법이다.