육식하는야채의 개발일지
article thumbnail
Published 2024. 3. 26. 01:07
명령어 병렬 처리 기법 CS

 

빠른 CPU를 만들려면 클럭, 멀티코어, 멀티스레드도 중요하지만 

CPU가 얼마나 놀지 않고 계속 일하는 지도 중요하다.

 

CPU를 쉬지 않고 작동시키는 기법인 명령어 병렬 처리 기법의 대표적인 기법인

명령어 파이프라이닝, 슈퍼스칼라, 비순차적 명령어 처리를 알아보겠다.

 

1. 명령어 파이프라인

CPU의 명령어 처리 과정은 

(명령어)인출 - 해석 - 실행 - 결과 저장로 보통 이루어진다.

하지만 📌CPU는 겹치지만 않으면  각 단계를 동시에 실행할 수 있다.

위의 그림과 같이 명령어 1을 해석할 때 명령어 2를 인출하고....

여러 명령어를 동시에 처리할 수 있게 해주어 더욱 빠른 명령어처리로 CPU의 성능을 올리는 기법이다.

명령어 파이프라인 또는 명령어 파이프라이닝이라고한다.

 

❗️파이프라인 위험

파이프라인은 효율적이지만 특정 상황에서는 성능   햐상에 실패하는 경우도 있다.

이런 상황을 파이프라인 위험이라고 부른다. 파이프라인 위험에는 크게 3가지 위험이 있다.

 

1. 데이터 위험

어떤 명령어들은 다른 명령어의 결과를 가지고 작동하는 명령어들이 있다. 예를 들어 a 와 b의 결과값인 c를 가지고 작동하는 명령어는

c가 나오기 전까지는 실행할 수 없다. 이와 같은 데이터에 의존적인 두 명령어를 동시에 실행할여고 하면 파이프라인이 제대로 작동하지 않을 수 있다.

 

2. 제어 위험

기본적으로 프로그램 카운터는 현재 실행 중인 명령어의 다음 주소로 갱신된다. 하지만 이 프로그램 카운터 값에 급작스런 변화가 생긴다면

명령어 파이프라인에 미리 가지고 와서 처리 중이었던 명령어들은 아무 쓸모가 없어진다. 이를 제어 위험이라 한다.

 

3. 구조적 위험

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

자원 위험이라고도 한다.

 

 

슈퍼스칼라

파이프라이닝은 단일 파이프라인으로도구현이 가능하지만, 오늘날 대부분의 CPU는 여러 개의 파이프라인을 이용한다.

여러 개의 파이프라인을 포함한 구조를 슈퍼스칼라라고 한다.

슈퍼스칼라 프로세서는 이론적으로 파이프라인 개수에 비례하여 처리 속도가 빨라진다.

하지만 파이프라인 위험 등의 예상치 못한 문제가 있어 파이프라인의 개수에 비례하여 빨라지진 않는다.

 

 

비순차적 명령어 처리

오늘날 CPU 성능항상에 크게 기여한 기법이자 대부분의 CPU가 차용하는 기법
📌 명령어들을 순차적으로 실행하지 않는 기법

 

데이터의존성이 있는 명령어들은 의존하는 명령어가 값을  보내줄 때까지 대기해야한다.

비순차적 명령어는 이런 문제를 해결하는 기법이다.

데이터 의존성이 전혀 없는, 순서를 바꿔 처리해도 결과에 영향을 미치지 않는  명령어들을 먼저 실행하여 

의존성이 높은 명령어에 의해 파이프라인이 멈추는 것을 방지하는 기법이다.

'CS' 카테고리의 다른 글

CISC와 RISC  (0) 2024.03.26
빠른 CPU를 위한 설계 기법  (0) 2024.03.26
CPU의 작동 원리  (0) 2024.03.12
profile

육식하는야채의 개발일지

@육식하는야채

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!