컴퓨터구조+운영체제

명령어 병렬 처리 기법

chojdsj 2023. 11. 29. 15:59
728x90

 

 

- 명령어 병럴 처리 기법에는 대표적으로 명령어 파이프 라이닝, 슈퍼스칼라, 비순차적 명령어 처리가 있다.

 

 

명령어 파이프 라인

 

 

- 명령어 처리 과정을 클럭 단위로 나누어 보면 다음과 같이 나눌 수 있다.

 

1) 명령어 인출

2) 명령어 해석

3) 명령어 실행

4) 결과 저장

 

 

- CPU는 각 단계가 겹치지만 않는다면 동시에 실행할 수 있습니다.

 

 

 

 

 

-> t1은 명령어 1,2를 동시에 처리하고 있는 것을 확인할 수 있습니다. 다른 것도 마찬가지입니다.

 

-> 이처럼 마치 공장 생산 라인과 같이 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법명령어 파이프라이닝 이라고 한다.

 

 

 

- 파이프라이닝이 높은 성능을 가져오기는 하지만 특정 상황에서는 성능 향상에 실패하는 경우도 있다. 이러한 상황을 파이프라인 위험이라고 하는데 크게 데이터 위험, 제어 위험, 구조적 위험이 있다.

 

 

 

* 데이터 위험

 

- 데이터 위험은 명령어 간 데이터 의존성에 의해 발생한다.

 

 

-> 만약 명령어1이 실행되기 전에 명령어2가 실행된다면 R1값이 올바른 값이 아닌 상태로 명령어2를 수행한다.

 

-> 따라서 명령어2는 명령어1의 데이터에 의존적.

 

-> 데이터 의존적인 두 명령어를 무작정 동시에 실행하려고 하면 파이프라인이 제대로 작동하지 않는 것을 데이터 위험이라고 한다.

 

 

 

 

* 제어  위험

 

- 제어 위험은 주로 분기 등으로 인한 프로그램 카운터의 갑작스러운 변화에 의해 발생한다.

 

- 프로그램 카운터 값에 갑작스러운 변화가 생기면 명령어 파이프라인이 미리 가지고 와서 처리중이었던 명령어들은 쓸모가 없어진다. 이를 제어 위험 이라고 한다.

 

 

 

 

* 구조적 위험

 

- 구조적 위험은 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, 레지스터 등과 같은 CPU 부품을 사용하려고 할 때 발생한다.

 

- 자원 위험 이라고도 부른다.

 

 

 

 

 

슈퍼 스칼라

 

 

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

 

- 슈퍼스칼라 구조로 명령어 처리가 가능한 CPU를 슈퍼스칼라 프로세서 또는 슈퍼스칼라 CPU라고 한다.

 

- 매 클럭 주기마다 동시에 여러 명령어를 인출, 실행 할수도 있어야 한다. 멀티스레드 프로세서도 슈퍼스칼라 구조를 사용할 수 있다.

 

- 파이프라인 개수에 비례하여 처리 속도가 빨라진다.

 

 

 

 

 

 

비순차적 명령어 처리

 

 

- 비순차적 명령어 처리 기법은 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병렬 처리 기법.

 

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

 

- 비순차적 명령어 처리가 가능한 CPU는 명령어들이 어떤 명령어와 데이터 의존성을 가지고 있는지, 순서를 바꿔 실행할 수 있는 명령어에는 어떤 것들이 있는지 판단할 수 있어야 한다.

 

 

 

 

 

 

 

 

 

 

출처 : 혼자공부하는 컴퓨터 구조 + 운영체제(강민철)

 

'컴퓨터구조+운영체제' 카테고리의 다른 글

RAM의 특징과 종류  (1) 2023.12.01
CISC와 RI  (0) 2023.11.29
CPU 성능 향상 기법  (0) 2023.11.28
CPU의 작동 원리(명령어 사이클, 인터럽트)  (0) 2023.11.27
명령어  (0) 2023.11.24