[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의 한계
- forward unit이 없음
- WAR hazard를 해결하기 위해 대기하는 시간이 길다
'CS > CA' 카테고리의 다른 글
[CA] Loop-Level Parellelism & Instruction Scheduling (0) | 2024.05.24 |
---|---|
[CA] ILP - Introduction (0) | 2024.05.24 |
블로그의 정보
공부중임
구설구설