[ Computer Science ]

[CS] CPU 파이프라인

2023. 7. 14. 14:13
목차
  1. 명령어 파이프라인이란?
  2. CPU 기본 실행 구조
  3. Instruction Fetch(인출)
  4. Instruction  Decode(해석)
  5. Instruction  Execution(실행)
  6. Writeback(저장)
  7. 파이프라인 기법을 사용하지 않았을 때
  8. 4단계 파이프라인 구조 

명령어 파이프라인이란?

하나의 명령어 사이클을 여러 단계로 나누고 각 단계에서 동시에 다른 세부 작업을 처리하도록 설계하는 것이다.

파이프라인을 이용해 CPU 성능을 높일 수 있다.


CPU 기본 실행 구조

Instruction Fetch(인출)

실행할 명령어를 메모리에서 읽어 CPU로 가져온다.

Instruction  Decode(해석)

인출한 명령어에 포함된 데이터를 가져오고, 명령어를 해독한다.

Instruction  Execution(실행)

명령어 실행

Writeback(저장)

실행 결과를 저장한다.

 

위의 4단계의 실행 구조가 기본이다. 이 4개의 단계로 파이프라인을 적용하면 어떻게 되는지 알아보자.


아래 4개 단계의 명령어를 실행할 때 파이프라인 적용 유무에 따라 어떻게 달라지는지 알아보자
  • IF : Instruction Fetch(명령어 인출)
  • ID : Instruction Decode(명령어 해석)
  • EX : Execution(실행)
  • WB : Write Back(결과 저장)

파이프라인 기법을 사용하지 않았을 때

명령어 3개를 실행하는데, 하나의 명령어가 모두 종료된 후 다른 명령어를 실행한다.

하나의 단계를 실행하는데 1사이클이 걸린다고 했을 때,

명령어 1, 2, 3을 실행할 때 각각 4사이클씩 걸리서 총 12사이클이 소모된다.

4단계 파이프라인 구조 

파이프라인 구조를 사용시 아래와 같이 병렬적으로 처리가 가능하여 처리 속도가 빨라진다.

위에서 3개에 명령어를 실행하는데 12사이클이 걸린 것에 반해,

6개의 명령어를 실행하는데 9사이클이 걸린 것을 볼 수 있다.


단계 수를 늘려서 더 빠르게 연산 가능

아래처럼 단계 수를 늘리면, 한 단계를 수행하는 데 걸리는 시간이 더 짧아지기 때문에

가로축은 위의 다른 그림들과 단위가 다르다고 생각하면 된다.

 

단계를 더 세세하게 나누게 되면 성능을 더 향상 시킬 수 있다.

요즘은 수십단계로 나누지만, 무한정 늘리지는 않는다.

요즘 CPU는 여러개의 명령어 파이프라인과 연산 파이프라인을 갖도록 설계된다고 한다.

저작자표시 (새창열림)

'[ Computer Science ]' 카테고리의 다른 글

[Web/암호화] Web개발자 관점에서 보는 여러가지 암호화 방식 (RSA / SHA / AES)  (0) 2024.10.08
[CS/Network] TCP와 UDP 프로토콜  (0) 2023.07.20
[CS] CPU의 구조와 동작 원리, 데이터 접근  (0) 2023.07.12
[CS] 메모리 계층과 저장 장치(RAM, Register,Cache, HDD)  (0) 2023.07.11
[CS/디지털논리회로] 덧셈기(adder), 반 가산기, 전 가산기  (0) 2023.07.11
  1. 명령어 파이프라인이란?
  2. CPU 기본 실행 구조
  3. Instruction Fetch(인출)
  4. Instruction  Decode(해석)
  5. Instruction  Execution(실행)
  6. Writeback(저장)
  7. 파이프라인 기법을 사용하지 않았을 때
  8. 4단계 파이프라인 구조 
'[ Computer Science ]' 카테고리의 다른 글
  • [Web/암호화] Web개발자 관점에서 보는 여러가지 암호화 방식 (RSA / SHA / AES)
  • [CS/Network] TCP와 UDP 프로토콜
  • [CS] CPU의 구조와 동작 원리, 데이터 접근
  • [CS] 메모리 계층과 저장 장치(RAM, Register,Cache, HDD)
HSRyuuu
HSRyuuu
Web Backend Developer happyhsryu
HSRyuuu
HS_dev_log
HSRyuuu
전체
오늘
어제
  • 전체 글 보기 (235)
    • Java (25)
    • Spring (29)
    • JPA & QueryDSL (13)
    • Database (17)
    • 자료구조 & 알고리즘 (30)
    • DevOps (10)
    • [ Computer Science ] (47)
      • Web & Network (14)
      • 프로그래밍 이론 (11)
      • 운영체제 (3)
      • 데이터베이스 이론 (5)
      • Linux 리눅스 (7)
    • [ Frontend ] (17)
      • Vue.js & Nuxt.js (9)
      • JSP_Thymeleaf (7)
    • [ 기타 ] (47)
      • 오픈소스 라이브러리 (5)
      • 코딩테스트 (13)
      • Trouble Shooting (7)
      • Tech Interview (6)
      • Book Review (9)
      • 끄적끄적... (5)
      • 개인 프로젝트 (2)

블로그 메뉴

  • 홈
  • 태그
  • github

공지사항

  • GitHub
  • 공부한 내용을 정리하고 기록하는 블로그 입니다.

인기 글

태그

  • Database
  • 자료구조
  • 백엔드스쿨
  • MySQL
  • springsecurity
  • web
  • Java
  • 백엔드
  • vue3
  • mybatis
  • SQL
  • 클린코드
  • cleancode
  • 기술면접
  • Spring
  • JPA
  • 백엔드공부
  • SpringBoot
  • 리눅스
  • 개발자
  • Redisson
  • 제로베이스
  • Redis
  • HTTP
  • 트랜잭션
  • 백엔드기술면접
  • TechInterview
  • 백준
  • Linux
  • Nuxt3

최근 댓글

최근 글

hELLO · Designed By 정상우.
HSRyuuu
[CS] CPU 파이프라인
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.