공부한거 정리하는 노트에요

[CA] Scoreboarding

by 구설구설

Scoreboard

ID 단계를 두 개로 나눈다

  • Issue: 명령어를 해독하고 구조적 해저드(문제)가 있는지 확인
  • Read Operands: 데이터 해저드가 없을 때까지 기다린 후, 피연산자를 읽음

 

 

Scoreboard의 4단계

Issue

In-Order Issue

사용 가능한 FU가 없으면 Issue 하지 않음(structural hazard)

WAW 해저드 존재시 Issue 하지 않음 (레지스터 사용가능한지 확인)

 

Read Operands

이전 명령어들이 계산 소스 연산자를 기록할 때 까지 기다림

data forwarding 없음

 

Execute 

소스 연산자가 모두 완료되면 FU 실행 시작

FU 완료 시 scoreboard에 완료됨을 알림

 

Write Result

WAR 해저드가 없을 때 까지 대기

div.d   f0, f2, f4
add.d  f10, f0, f8
sub.d   f8, f8, f14

이후 레지스터에 기록

 

Scoreboard FU status

기능 유닛의 상태를 나타냅니다.

  • Busy: 유닛이 바쁜지 여부를 나타냅니다.
  • Op: 유닛에서 수행할 연산(operation)을 나타냅니다.
  • Fi: 목적지(destination) 레지스터 번호를 나타냅니다.
  • Fj, Fk: 소스(source) 레지스터 번호를 나타냅니다.
  • Qj, Qk: 소스 레지스터(Fj, Fk) 값을 생성하는 기능 유닛을 나타냅니다.
  • Rj, Rk: Fj와 Fk가 준비되었음을 나타내는 플래그입니다.

 

예제

 

두 번째 로드를 Issue 할 수 없는 이유 = 이미 모든 로드 FU가 사용중이기 때문에 (structural hazard)

Execute단계로 들어오면 레지스터가 준비 되었는지 여부에 No를 표시한다

MULTD를 Issue할 수 없는 이유 = 아직 F2에 로드를 하지 않았기 때문에

두번째 로드 Issue

MULTD Issue

MULTD Read하지 않는 이유 = 아직 F2 로드가 Write하지 않아서(RAW)

Div Issue

load write result

로드가 끝나서 이제 mult와 sub를 read할 수 있음.

ADDD를 Issue할 수 없는 이유 = F8이 Add에 의해 아직 쓰이기 전이기 때문에

아직 Mult가 write하지 않아서 div를 read할 수 없음

Subd write완료했기 때문에 Add /Issue 가능

모든 피연산자가 준비 되었기에 addd read

write하지 않는 이유 = 아직 Divd를 read하지 않아 WAR hazard 발생

MULt write 이후에 div read, 이제 add를 write 할 수 있음

 

Scoreboard의 한계

  1. forward unit이 없음
  2. WAR hazard를 해결하기 위해 대기하는 시간이 길다

 

 

 

 

 

 

 

 

 

 

 

 

'CS > CA' 카테고리의 다른 글

[CA] Loop-Level Parellelism & Instruction Scheduling  (0) 2024.05.24
[CA] ILP - Introduction  (0) 2024.05.24

블로그의 정보

공부중임

구설구설

활동하기