[컴퓨터 구조] 비순차적실행

Kioreo·2023년 6월 18일
0

컴퓨터 구조

목록 보기
3/5

비순차적실행(Out-of-order Execution)

비순차적 실행은 앞서 다뤘던 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병령 처리 기법입니다.

순차적 명령어 처리를 하게 되면 아래 사진과 같이 효율성이 떨어지게 됩니다.

3번 명령어를 처리하기 위해선 앞서 선행되어야할 명령어 처리가 있습니다.
이런 상황에서 3번 명령어를 마지막으로 보내 효율성을 높일 수 있습니다.

이처럼 순차적 실행의 효율성을 해결하기 위해 컴파일러 수준에서 파이프라인 중단을 최소화하도록 명령어를 배치하는 최적화 등을 수행하기도 하였지만, ISA의 각 구현마다 파이프라인 구조가 다르고 또한 컴파일 시간에 모든 의존성을 알 수 없는 등의 여러 한계점이 많았습니다. 그래서 등장한 것이 명령어를 프로그램에 나타난 순서대로 처리하지 않는 비순차적 실행 기법입니다. 비순차적 실행 기법에서는 명령어 해석(Decode) 단계를 발행(Issue)과 피연산자 읽기(Read Operand)의 두 단계로 나뉩니다. 명령어들은 발행 단계는 순차적으로 거치게 되지만, 피연산자 읽기(Read Operand) 단계에서는 의존성이 해결될 때까지 진입하지 못하고 기다려야 하고(stall), 이 틈을 타서 뒤쪽의 명령어들이 먼저 순서를 바꾸어 실행될 수 있습니다.

profile
KITRI BoB 12th, Layer7 23rd

0개의 댓글