티스토리 뷰
반응형
✅ 파이프라이닝이 속도를 빠르게 하는 이유: 시간 단위로 보기
📍 전제: 명령어 실행에는 5단계가 필요합니다
CPU는 명령어 1개를 실행하기 위해 아래의 5단계를 항상 거칩니다:
단계 번호 | 내용 (예시) |
---|---|
① Fetch | 명령어를 메모리에서 읽기 |
② Decode | 명령어를 해석하기 |
③ Operand Fetch | 필요한 데이터 불러오기 |
④ Execute | 실제 연산 수행 |
⑤ Write back | 결과 저장 |
✅ 파이프라이닝 없는 경우 (순차 실행)
명령어가 5개 있다고 가정해봅시다.
- 각 명령어가 5단계를 차례대로 순차적으로 거칩니다.
- 각 단계는 1초씩 걸린다고 가정합니다.
🕒 총 시간 계산:
명령어 번호 | 실행 단계 | 시간 |
---|---|---|
1번 명령어 | ①②③④⑤ | 5초 |
2번 명령어 | ①②③④⑤ | 5초 |
3번 명령어 | ①②③④⑤ | 5초 |
4번 명령어 | ①②③④⑤ | 5초 |
5번 명령어 | ①②③④⑤ | 5초 |
👉 총 25초가 걸립니다.
왜냐하면 하나의 명령어가 끝나야 다음 명령어가 시작되기 때문입니다.
✅ 파이프라이닝 있는 경우 (겹쳐서 실행)
이제는 파이프라인 구조로 같은 5개의 명령어를 실행한다고 해봅시다.
1번 명령어가 ①을 수행하고 있을 때,
→ 2번 명령어는 그 다음 초에 ①을 시작하고
→ 1번 명령어는 ②로 넘어가고...
→ 이렇게 겹치게 처리합니다.
🕒 실행 시나리오 (1초 단위):
시간 | 1번 명령어 | 2번 명령어 | 3번 명령어 | 4번 명령어 | 5번 명령어 |
---|---|---|---|---|---|
1초 | Fetch | ||||
2초 | Decode | Fetch | |||
3초 | Operand Fetch | Decode | Fetch | ||
4초 | Execute | Operand Fetch | Decode | Fetch | |
5초 | Write Back | Execute | Operand Fetch | Decode | Fetch |
6초 | 완료 | Write Back | Execute | Operand Fetch | Decode |
7초 | 완료 | Write Back | Execute | Operand Fetch | |
8초 | 완료 | Write Back | Execute | ||
9초 | 완료 | Write Back | |||
10초 | 완료 |
👉 총 10초만에 5개의 명령어 처리 완료!
✅ 비교 정리
방식 | 명령어 수 | 총 처리 시간 | 처리 속도 |
---|---|---|---|
순차 실행 (비파이프라인) | 5개 | 25초 | 1개당 5초 |
파이프라인 실행 | 5개 | 10초 | 1개당 2초 (평균) |
💡 핵심 차이:
- 파이프라이닝은 명령어가 끝날 때까지 기다리지 않고
- 다음 명령어를 미리 시작할 수 있어서
- 명령어들이 겹치게 동시에 실행됩니다.
🔁 쉽게 비유하면?
🔴 파이프라이닝 없는 경우:
한 수도꼭지에서 컵 5개에 물을 채운다고 상상해보세요.
- 첫 번째 컵 다 채운 후
- 두 번째 컵 넣고...
- 총 25초 걸림 (5초씩)
🟢 파이프라이닝 있는 경우:
컨베이어 벨트에 컵을 놓고, 1초마다 물이 한 번씩 떨어지는 기계
- 컵이 줄지어 이동하면서
- 1초마다 컵 하나 완성됨 → 총 10초로 끝남
🎯 핵심 정리
항목 | 설명 |
---|---|
파이프라이닝이란? | 명령어 실행을 여러 단계로 나누고, 각 단계에 다음 명령어를 겹쳐서 처리하는 방식 |
왜 빠른가? | 명령어가 끝날 때까지 기다리지 않고, 다음 명령어를 바로 시작할 수 있으므로 |
어느 순간부터 효과가 커지나? | 5사이클 이후부터는 매 1초마다 명령어 1개 완료 수준의 효율 |
단점은 없나? | 명령 순서가 얽히거나 조건문(if)이 많으면 멈춤(stall) 발생 가능 |
✅ 실제 CPU는 어떻게 적용할까?
RISC CPU는 명령어 구조가 단순하고 고정되어 있어
→ 파이프라이닝 적용에 매우 적합합니다.예: ARM, MIPS, RISC-V 등의 CPU는 기본적으로 5단계, 7단계 파이프라인을 가지고 있음
CISC CPU(예: Intel x86)는 명령어가 복잡하고 길이도 다 달라서
→ 파이프라이닝 설계가 어렵지만,
→ 내부적으로 명령어를 micro-op(마이크로 단위 명령)으로 쪼개서 RISC처럼 처리함
✅ 마무리 요약
질문 | 답변 요약 |
---|---|
파이프라이닝이란? | 명령어 실행을 여러 단계로 쪼개고, 각 단계를 겹쳐서 동시에 처리하는 기술 |
왜 빠름? | 명령어 하나가 끝나기를 기다리지 않고, 연속해서 처리 가능 |
비유 | 햄버거 공장에서 각 단계별 분업으로 동시에 작업하는 것 |
어떤 구조에서 잘 작동? | 명령어 구조가 단순한 RISC 아키텍처에서 효과적 |
반응형
'프로그래밍 > 시스템 프로그래밍' 카테고리의 다른 글
🧠 UC Count란 무엇인가? (0) | 2025.03.24 |
---|---|
커널 오브젝트와 핸들 (0) | 2025.03.24 |
프로세스(Process)란? (0) | 2025.03.21 |
주소 참조 방식(Direct vs Indirect) (0) | 2025.03.21 |
CISC vs RISC CPU 구조 완전 정리 (0) | 2025.03.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 오블완
- 인프런
- 데이터분석
- 백준
- 뇌와행동의기초
- 파이썬
- K-MOOC
- 일본어
- 심리학
- stl
- 코딩테스트
- EBS
- C/C++
- 티스토리챌린지
- 일문따
- 사회심리학
- 류근관
- c++
- 열혈프로그래밍
- 여인권
- 윤성우
- 정보처리기사
- C
- 통계학
- jlpt
- 인지부조화
- Python
- 회계
- 보세사
- 일본어문법무작정따라하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함
반응형