Pipeline CPU(2) Pipeline-CPU의 간략한 이해

Pipeline-CPU 목차

앞서 Pipeline CPU를 design 해보기 위한 준비과정으로 Single-Cycle CPU와 Multi-Cycle CPU의 특성들을 먼저 살펴보았습니다.


Pipeline CPU의 전체적 그림

Pipeline-CPU은 사실 Multi-Cycle-CPU에서 부터 출발합니다. 하지만, 어떤 면에서 더 우월한 점이 있을까요?

한 번에 한 가지 일만을 수행하는 Multi-Cycle-CPU


Feature1. Multi-Cycle-CPU overview 비유

옷을 빨래하는 과정을 떠올려봅시다.

  1. 세탁기를 돌린다.
  2. 건조기를 돌린다.
  3. 옷을 잘 정리한다.
  4. 옷을 옷장에 잘 정리한다.

빨래라는 일을 수행하기 위해 우리는 4가지 작업을 수행해야합니다. 하지만 내가 옷을 잘 정리할 동안, 멈춰있는 세탁기와 건조기를 사용할 수 있다면 어떨까요?
즉, 다시 말해 한 번에 여러가지의 작업을 동시에 수행한다면 빨래라는 일을 더 빠르게 수행할 수 있을 것입니다.


Feature2. Pipelined Laundry

Feature2에서 확인할 수 있듯이, pipelining을 통해 한 번에 여러가지의 작업을 동시에 수행할 수 있게 되었습니다. 그 결과 빨래를 4번 수행하려면 8시간 걸리던 일이, Pipelining을 통한 구현으로 3시간 30분만에 수행할 수 있게되었습니다.

따라서, Pipelining을 통해서 CPU의 Throughput을 증가시키고 하드에웨어 자원들을 더욱 효율적으로 사용이 가능합니다.

Overview of Pipeline-CPU


Feature3. Graphical View

위의 Feature3을 한 번 살펴봅시다. LD, SUB, ADD 등의 새로운 Instruction이 CC시간 마다 계속해서 CPU에 입력되고 있습니다. 이전의 Single-Cycle-CPUMulti-Cycle-CPU 였다면 LD Instr이 끝날때까지 다음의 SUB Instr은 대기하고 있어야만 하였습니다.

이제는 Pipelining을 통해서 일정 간격으로 새로운 Instr을 연속적으로 수행할 수 있게 되었습니다. CC5가 되는 순간에는 WB, MEM, EX, ID, IF 의 모든 Stage가 동시에 수행되는 것을 확인할 수가 있는데요. 이처럼 CPU에 주어진 HW resource를 모두 최대한으로 활용하는 것을 확인할 수가 있습니다.

문제는 지금부터…

그러나 매번 새롭게 들어오는 Instruction을 CPU는 어떻게 잘 수행할 수 있을까요? 위의 CC5 시점의 경우 동시간에 5개의 Instr이 수행되고 있습니다. 이때, EX stage는 5개의 Instr 중에 어느 것을 수행하여 ALU 계산을 해야할까요?

또한 만약, 앞에서 수행한 Instr의 결과를 그대로 받아와서 다음 Instr에 수행하는 경우가 있을 때, 계산 결과가 레지스터에 저장되지 않았는데도 불구하고 계산을 하라는 명령을 CPU가 받게 되면 어떻게 될까요?

그렇습니다. 여기서 부터 Pipeline-CPU를 정상적으로 잘 작동시키기 위해서 무엇보다 중요한 다음의 세가지 주요 사항을 짚어 넘어가야 합니다.

각 중요 사항들에 대해서 다음 Post에서 계속해서 알아봅시다.


Post의 참고자료와 이미지의 출처는 아래와 같습니다.

Computer Organization and Design RISC-V edition
Computer Architecrue Lecture Note @ Carnegie Mellon University, University of, Michigan, Purdue University, University of Pennsylvania, University of Wisconsin and POSTECH.




2021 의 게시글

NMF

NMF 음수미포함 행렬분해

PCA, EVD

PCA 주성분 분석(차원 축소)

15989번 1,2,3 더하기 4(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

10942번 펠린드롬(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

12865번 평범한 배낭(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄 보도록 합시다.

11066번 파일 합치기(다이내믹 프로그래밍)

다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.

2차원 배열 유형 문제

삼성역량테스트에서 출제되는 코테문제들의 경우 2차원 배열을 특정한 기준을 통해 회전시키는 문제가 자주 출제됩니다.

Introducing Python 파이썬 정리(2)

Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.

Introducing Python 파이썬 정리(1)

Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.

Pipeline CPU(5)- Control Hazard

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

Pipeline CPU(4)- Data Forwarding

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

Pipeline CPU(3)- Data Hazard

Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...

맨 위로 이동 ↑