[명령어 파이프라인이란]

 

명령어 파이프라인(Instruction Pipeline)은 CPU 내부에서 명령어를 효율적으로 처리하기 위해 작업 공정을 나누고 동시에 처리하는 방식입니다. 명령어를 하나씩 단계별로 처리하는 것이 아니라, 여러 명령어가 서로 다른 단계를 동시에 처리하도록 만든 구조인 것입니다.

 

 

[구조]

 

CPU는 명령어를 실행할 때마다 다음의 과정을 거칩니다.

1. IF : Instruction Fetch, 명령어를 메모리에서 가져옴
2. ID : Instruction Decode, 명령어를 해석함
3. OF : Operand Fetch, 필요한 데이터(피연산자)를 읽음
4. EX : MEM // Execute, 실제 연산 수행
5. WB : Write Back, 결과를 레지스터나 메모리에 저장

 

비파이프라인 구조에서는 위의 5가지 단계가 모두 끝나야 다음 명령어 처리를 수행할 수 있습니다. 즉, 하나의 [IF -> ID -> OF -> EX -> WB]가 완료되어야 다음의 [IF -> ID -> OF -> EX -> WB]를 수행한다는 것입니다.

 

하지만 파이프라인 구조에서는 명령어 처리를 다음과 같이 실시합니다.

 

한 사람이 모든 작업을 순차적으로 처리하는 것이 아니라, 여러 명이 각 단계만 전담해서 동시에 일을 처리하는 구조라고 보시면 될 것 같습니다.

 

 

[장점]

비파이프라인(순차 처리) - 각 명령어가 5단계라면, 1개 명령어 처리에 5클록
- 5개의 명령어 처리 시, 5x5클록(25클록)
파이프라인(병렬 처리) - 첫 명령어 처리는 5단계가 걸리지만, 이후부터는 매 클록마다 새로운 명령이 투입되어 처리됨
- 각 명령어가 5단계라면, 5 + (5 - 1) = 9클록으로 명령어 처리 가능
- 비파이프라인 구조보다 이론적으로 5배 빠르지만, 해저드(지연, 충돌)로 인해 5배 빠른것은 아님

 

 

[단점 및 해결책]

 

물론 장점만 존재하는 것은 아닙니다. 보통 해저드(Hazard) 문제가 발생하는데, 해저드는 여러 명령이 동시에 움직이다보니 발생하는 충돌과 의존성 문제를 말합니다. 

 

> 구조적 해저드(Structural Hazard)

: 두 단계가 동시에 같은 하드웨어 자원을 쓰려할 때 발생하는 문제를 말합니다.

명령어 인출 단계(IF)와 오퍼랜드 읽기(OF)가 동시에 메모리를 사용하려 할 때

 

구조적 해저드는 명령용 메모리와 데이터용 메모리를 분리하거나(하버드 구조), 자원 복제 또는 접근 시간 조정을 필요로 합니다.

 

> 데이터 해저드(Data Hazard)

: 이전 명령의 결과가 아직 나오지 않았는데, 다음 명령이 그 값을 필요로 하는 경우 발생하는 문제입니다.

ADD R1, R2, R3   ; R1 = R2 + R3
SUB R4, R1, R5   ; R4 = R1 - R5 (R1이 아직 안 나옴)

 

데이터 해저드는 결과가 나오는 즉시 다음 명령으로 전달하는 전방 전달(Forwarding)이나 NOP을 삽입하여 잠깐 멈춰서 기다리는 버블(Stall)을 통해 해결할 수 있습니다.

 

> 제어 해저드(Control Hazard)

: 분기(branch) 명령이 있을 때 다음 명령이 무엇일지 확정되지 않은 경우 발생하는 문제입니다.

BEQ R1, R2, LABEL

 

위의 문제는 분기 조건이 참일지 거짓일지 모르기 때문에, 이미 인출된 다음 명령이 무의미해질 수 있게 됩니다. 이에 대한 해결적으로는 분기 예측(Branch Prediction), 브랜치 지연 슬롯(Delay Slot), 스페큘레이티브 실행(Speculative Execution) 등이 있습니다.

'컴퓨터과학 > 시스템' 카테고리의 다른 글

[CS] CPU(Central Processing Unit)  (0) 2025.09.30
[CS] 페이지 폴트(Page Fault)  (0) 2025.05.19
[CS] 세그멘테이션(Segmentation)  (0) 2025.05.19
[CS] 페이징(Paging)  (0) 2025.05.19
[CS] 가상 메모리(Virtual Memory)  (0) 2025.05.18

+ Recent posts