개인공부/컴퓨터 구조와 운영체제
[컴퓨터 구조와 운영체제] 명령어 병렬 처리 기법
개바리여리
2025. 1. 3. 00:36
여러 명령어를 효율적이고 빠르게 처리하는 방법으로 병렬 처리 기법이 있다.
우선은 명령어 파이프라인을 알아야 한다.
명령어 파이프라인
- 명령어 인출
- 명령어 해석
- 명령어 실행
- 결과 저장
이 파이프라인이 같은 단계가 겹치치 않는다면 CPU는 각 단계를 동시에 실행할 수 있다.

이러한 파이프라이닝을 하면서 발생하는 문제점들이 있다.
이러한 위험요소들을 파이프라인 위험이라고 한다.
파이프라인 위험 : 명령어 파이프라인이 성능 향상에 실패하는 경우

- 데이터 위험 : 명령어 간의 의존성에 의하여 발생한다. 모든 명령어들을 동시에 처리할 수 없다. ex: 3번의 실행결과는 1번의 실행결과와 2번의 실행결과를 더한 값이다. 3번 명령어의 실행결과는 1번과 2번의 의해 결졍된다.
- 제어 위험 : 프로그램 카운터의 갑작스러운 변화, cpu가 실행하는 메모리 주소 번지가 다른 번지로 바뀌는 경우 (실행의 흐름 변경)
- 구조 위험 : 서로 다른 명령어가 같은 CPU 부품(ALU, 레지스터 등)을 사용하려고 할때 발생한다.
슈퍼 스칼라 기법: 이러한 명령어 파이프라인을 여러개 포함한 구조로 이루어 진다.
* 이론적으로는 이 기법을 통하여 파이프라인 수에 비례하여 처리속도는 증가하겠지만
위험도 또한 증가하므로 이론적으로 흘러가진 않는다.

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

이러한 형식으로 3번을 맨밑으로 보내도 결과는 달라지지 않는다. 근데 순차적으로 처리한다면 1,2번을 기다리는 형태로 가서 파이프라인이 효율적으로 동작하지 못하게 될것이다.
하지만 3번을 1, 2번을 앞으로 보낼순 없다. 3번의 결과값은 1번과 2번에 의존하고 있기 때문이다.
출처 : https://www.youtube.com/watch?v=Btsa_U-f26k&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=15