The Processor Part.2 - Computer Architecture

The Processor Part.2 - Computer Architecture

생성일
May 29, 2024 06:20 AM
Description
컴퓨터 구조의 프로세서 에 대해 알아봅니다.
Tag
Computer Science Engineering
Computer Architecture

Performance Issues

  • 가장 지연시간이 긴 부분(longest delay)가 전체 클럭 주기(clock period)를 결정한다.
    • 특히 치명적인 경로(경로가 길어서 delay가 클 확률이 높은): load instruction
    • instruction memory → register → ALU → data memory → register
  • 다른 instruction에 다른 주기로 실행할 수 없다.
    • 모든 instruction은 한 clock cycle에 실행되어야 하며, 모두 같은 clock cycle time이어야 한다.
  • 설계 원칙(design principle)을 위배한다.
    • making the common case fast(가장 일반적인, 자주 사용되는 경로를 빠르게 하라)를 위배한다.
      • 가장 느린 것에 맞춰지기 때문
    • 자주 사용되는 경로를 빠르게 하려고 해봤자, 가장 느린 것에 맞춰진다.
  • 우리는 pipelining을 통해 성능을 향상시킬 것이다.
 

Single Cycle CPU

notion image
 

Overview of Pipeline

sequential
sequential
pipeline (병렬처리)
pipeline (병렬처리)
  • pipelining은 단일 작업의 지연 시간에는 도움이 되지 않지만, 전체 workload의 처리량을 높인다.
  • 가장 느린 파이프라인 단계에 의해 파이프라인 속도는 제한된다.
  • 서로 다른 리소스를 사용하여 동시에 작동하는 여러 작업
  • 잠재적인 속도 상승 = pipe stages의 수
  • 파이프 스테이지의 불균형한 길이로 속도 향상
 

MIPS Pipeline

notion image
  • 5개의 stage. stage마다 다음 중 하나의 단계를 수행한다.
    • IF: Instruction fetch from meory ( 메모리로부터 명령어를 불러온다 )
    • ID: Instruction Decode ( 명령어 해석, 레지스터 read )
    • EX: Excute operation or calculate address (작업 실행 혹은 주소 계산)
    • MEM: Access memory operand (메모리에 접근)
    • WB: Write result back to register (레지스터에 결과를 다시 기록)
 

Pipelined Execution

notion image
  • 프로세서에는 여러 명령어가 동시에 다양한 단계에 존재한다.
  • 각 명령어에 5주기가 소요된다고 가정하자.
 

Single Cycle, Multiple Cycle vs Pipeline

notion image
 

Pipeline Performance

  • 각 stage별 시간을 측정해보면,
    • 레지스터 read, write에는 각각 100 pico second가 소요된다.
    • 다른 stage들은 200ps
notion image
 
  • pipeline화된 데이터경로와 single-cycle의 데이터 경로를 비교해보면,
    • single-cycle에서는 총 소요시간인 800ps 그대로.
    • pipelined에서는 가장 소요시간이 긴 200ps
notion image
 

Pipeline Speedup

  • 만약, 모든 stage들이 비슷한 처리시간을 갖는다면,
    • 즉, 모두 같은 시간이라면 “stage의 수”배의 성능향상 효과.
총 instruction의 모든 시간 기준. 단일 X
총 instruction의 모든 시간 기준. 단일 X
  • 모든 stage가 균등하지 않다면, 속도향상의 효과는 더 적을 것이다.
    • 가장 느린 stage에 맞춰지므로.
    • 총 시간이 800ps 이지만, 한 stage가 700ps 이라면, 다른 stage는 대기해야하고 결국 700ps
  • 속도향상은 throughput을 늘려서 얻은 결과이다.
    • 병렬식으로 동시에 여러 instruction을 실행시킴으로써
    • 지연시간(latency, 각 instruction 하나 실행에 걸리는 시간) 자체는 줄어들지 않음.
 

Pipelining and ISA Design

  • MIPS ISA는 pipelining에 적합한 구조임.
    • 모든 instruction은 32-bit임.
      • 한 cycle안에 fetch하고 decode하기 쉬움.
      • c.f. x86: 1~17-byte(8~136-bit)의 다양한 길이
    • 적은 종류의, 규격화된(regular) instruction format
      • 한번에 decode하고 레지스터를 read 가능
    • Load / Store addressing
      • 주소 계산은 3번째 stage에서, 메모리 접근은 4번째 stage에서 이루어짐.
      • 즉, stage별로 다른 작업을 수행할 수 있음.
    • memory operand의 정렬(alignment. 주소가 4byte씩 되어있다)
      • memory access는 한 싸이클 안에 이뤄진다.
       

MIPS Pipelined Datapath

notion image
→ 예전에 본 개략도는 single-cycle. 이제는 Multi(pipelined)
 

Pipeline registers

  • 각 stage 사이에 레지스터들이 필요하다. (stage수 - 1)
    • 이전 cycle에서 만들어진 정보를 가지고 있어야 하기 때문
notion image
 

Pipeline Operation

  • pipeline datapath를 통한 instruction의 cycle-by-cycle(cycle에서 cycle로) 흐름
    • “Single-clock-cycle” pipeline diagram
      • single-cycle을 사용하는 pipeline을 보여줌.
      • 사용되고 있는 하드웨어 자원을 강조
    • c.f. “multi-clock-cycle” diagram
      • 시간 경과에 따라 어떻게 실행되는지(operation) 보여주는 그래프
  • 이제 load & store 명령어를 수행하는 “single-clock-cycle” diagram을 살펴보자.
 

Single-clock-cycle pipeline diagram

IF for Load, Store, …

notion image

ID for Load, Store, …

notion image

EX for Load, Store, …

notion image

MEM for Load, Store, …

MEM for Load

notion image

MEM for Store

notion image

WB for Load

notion image
  • SW에서는 WB stage에서 강조되는 영역이 없다.
    • 메모리에서 오른편을 흐르는 두 개의 흐름 (I-format의 LW용 값 / R-format의 결과값)이 없음
    • 그래서 SW의 WB stage는 아무 작업도 없다.
  • pipeline에서 WB는 5번째 stage이며, 이만큼 이미 다른 cycle이 진행되어, 레지스터에는 이미 다른 명령어를 해석하고 있을 것이다.
    • 기존 명령어의 $rt가 아니므로, WB를 위해 기존 명령어의 $rt를 보존해야 한다.
    • 즉 레지스터에 값을 넣어야하는데, pipeline으로 인해 그 값이 이미 변경되어있을 것이다.

Corrected Datapath for Load

notion image
  • $rt 보존을 위해, 레지스터 이후의 stage간 레지스터 (pipeline register)마다 $rt를 넘겨줌으로써, WB에서 다시 레지스터에 전달하여 활용.
 

Multi-Cycle Pipeline Diagram

  • 시간과 명령어에 따른 resource(하드웨어 자원)의 사용을 보여줌.
notion image
  • 전통적인, 보통의 형태 (Traditional form)
notion image
 

Single-Cycle Pipeline Diagram

  • 주어진 cycle(특정한 cycle)에서 pipeline의 상태
    • 특정한 cycle에서 각 stage들이 어떤 명령어를 수행하고 있는지. 내부 상태가 어떤지
    • 바로 위의 diagram 사진을 보면, CC5의 상태
notion image
 

Performance를 위한 Pipeline

notion image
→ pipeline이 다 차게되면, 그 이후의 모든 cycle에서 하나의 instruction이 완료되기에 CPI는 1이다.
 

MIPS Pipeline Datapath Additions/Mods

notion image
  • pipeline stage 간에 상태 register를 위치시켜 고립시킨다.
 

Pipelined Control

notion image
  • Control signal(제어신호)는 instruction으로부터 파생된다.
  • 각 stage에 control들이 전달되기 위해, pipeline register(각 stage간 레지스터)에 함께 전달되어 보존되어야 한다.
    • single-cycle과는 달리, ID에서 해석되어 생성된 제어신호들이 각 stage에 쓰이기 위해 보존되어야 하므로.
    • pipeline에서는 ID에서 또 새로운 명령어로 다른 제어신호들을 생성할테니..
    • pipeline이 single-cycle보다 더 복잡해지는 것
    •  

MIPS Pipeline Data and Control Paths

notion image