Notice
Recent Posts
Recent Comments
«   2025/01   »
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 31
Archives
Today
Total
관리 메뉴

SYDev

[컴퓨터 구조] Lecture 14: The Processor - Part3 본문

3학년 1학기 전공/컴퓨터 구조

[컴퓨터 구조] Lecture 14: The Processor - Part3

시데브 2024. 5. 20. 02:01
경희대학교 김정욱 교수님의 컴퓨터 구조 강의 내용을 기반으로 한 정리글

 

Overview of Pipelining 

  • 여러 개의 명령어를 비동기로 처리하는 기술

 

 

Pipeline Instruction-execution (5 stages)

  1. 명령어를 메모리로부터 Fetch(가져오다)
  2. 명령어를 decoding하는 동안 read registers
  3. Execute the operation or calculate an address
  4. Data Memory의 operand에 접근
  5. 레지스터에 Write the result

-> lw는 모든 단계를 거치기 때문에 가장 오래 걸림

 

Pipelining Speed-Up Discussion

Single cycle vs. Pipelined performance

 

Pipelining speed-up

  • if the stages are perfectly balanced, 파이프라인의 명령어들 간의 차이는 다음과 같다.

  • 하지만 완벽하게 균형을 이루는 경우는 없기 때문에,
  • Time between instructions(pipelined) != Time between instructions(nonpipelined) / Num of pipe stages

 

3개의 명령어

  • Nonpipelined: 2400ps
  • Pipelined: 1400ps
  • 약 1.7배의 효율차이

1,000,003개의 명령어

  • Nonpipelined: 1,000,000 * 800ps + 2400ps ->(유사) 800,000,000ps
  • Pipelined:  1,000,000 * 200ps + 1400ps -> (유사) 200,000,000ps
  • 약 4배의 효율 차이

 

Pipelined Datapath and Control

5 stages of Pipelining 

  1. IF(Instruction fetch)
  2. ID: Instruction decode & register file read
  3. EX: Execution or address calculation
  4. MEM: Data memory access
  5. WB: Write back

 

  • 명령어들은 보통 left to right 방향으로 진행되지만, 두 가지 예외가 있다.
  1. Write-back(WB) stage
  2. PC의 next value 선택

-> MEM에서 beq를 판단한 순간, EX에서는 beq의 다음 명령어가 실행중

-> beq 점프를 하면 다음 명령어들은 무시가 돼야 하는데, 파이프라이닝 기법을 사용하면 이렇게 문제가 발생

-> 실행된 명령어들을 취소?

 

Pipeline register

  • CC1 내부의 Instruction Memory는 다음 4개의 스테이지와 공유됨
  • CC2의 IM이 fetch되면,  CC1의 IM은 삭제될 수 있다.
  • 각각의 명령어 value를 보존하기 위해서(나머지 4단계의), IM으로부터 읽어온 value는 레지스터에 저장된다.

 

 

Pipelined datapath with pipeline register

  • WB stage의 다음에는 pipeline register가 없다.

 

Five stages(lw instruction)

1. Instruction fetch

  • PC address는 4만큼 더해지고, 다음 cycle을 준비하기 위해서 PC로 돌아온다.
  • 이렇게 더해진 주소는 IF/ID pipeline register에 저장된다. -> beq와 같은 나중 명령어를 위해

2. Instruction decode & register file read

  • IF/ID pipeline register에 기반하여, 3개의 값을 얻는다. -> sign-extend 32bits, 2개의 레지스터의 데이터
  • 3개의 값 모두 -> ID/EX pepieline register에 저장된다.
  • 증가된 PC address도 저장

3. Execute or address calculation

  • ID/EX pipeline register에 기반하여, Ex/MEM pipieline register에 저장할 3개의 값을 얻을 수 있다.
  • (PC+4) + sign-extend 32-bits, Zero, ALU result

4. Memory address

  • Ex/MEM pipeline register로 부터 얻은 address를 이용하여 MEM/WB pipeline register에 메모리로부터 읽은 데이터를 저장한다.

5. Write-back

  • MEM/WB pipeline register에서 데이터를 읽어들여서 -> 레지스터에 저장
  • sw의 경우에는 마지막 단계가 Don't care이기 때문에 아무 일도 일어나지 않는다.

 

Graphically Representing Pipelines

  • Multiple clock cycle pipeline diagram은 기본적으로 두 가지 스타일이 있다.

First type

  • 모든 디테일을 포함하지 않는다.

 

Second type

  • 모든 디테일을 포함
  • 좀 더 전통적인 방식

 

Single clock cycle pipeline diagram

 

 

Pipelined Control

  • Control signals는 EX, Memory access, WB에서 디코딩되는데, IF/ID 단계 전에는 아직 디코드가 진행되지 않아 뭘 해야할지 모른다.