코드네임 :
🖥️ 컴퓨터구조 - pipelined processor - 구조적 해결ㅊ책 이거 맞음? 본문
Pipelining
: instruction의 수행 갯수를 늘림으로써 성능을 향상시킴
- 여러 instruction을 병렬처리로 실행 (겹치는 실행)
- '각' instruction의 실행시간 latency는 그대로
- 만일 4개의 세탁소를 pipeline 한다 하더라도 4배 빨라지지는 않음..
- instruction set 설계는 pipeline 구현의 복잡도에 영향
[ Pipeline Hazards ]
1. 구조적 해저드
- 세탁기가 한번에 두곳에서 쓰이려고 한다면 불가능
- 하드웨어가 필요한 명령어 조합을 지원하지 못해서
2. 데이터 해저드
- 명령어를 실행하는데 필요한 데이터가 아직 준비되지 않은 경우
- 이거 앞에서 WB로 연산으로 업데이트 된 데이터를 받아야만 다음 연산에서
쓰일 수 있는 경우
- 아직 필요한 데이터가 준비되지 않은 경우
3 . 제어 해저드
- 주로 브랜치에서 나타남
- rs1 = rs2 같이 요 결과가 나올때까지 어디로 jump할지
알 수 없어 연산 나올때까지 계속 기다려야 하는 경우
[구조적 해저드 해결책]
뒤로 밂 = 지연 ( stall )
- 또는 메모리 따로 두는 방법도 있음
[데이터 해저드 해결책]
1. Forwarding(Bypassing)
: 연산해서 나온 결과를 미리 다음 명령어에 보내주는 방법
⬇️
But!! Load 명령 다음에 R-format 명령이 나온다면 Forwarding으로 해결이 불가!! (강제 1 stall 지연)
⬇️
2. Code Scheduling to Avoid Stalls
[제어 해저드 해결책]
1. Stall on Branch
Branch 조건 계산 결과를 볼 때까지 stall
- ALU가 beq 조건을 검사하는 설계의 경우 2 stalls
- ID단계에 beq 조건(x1== x0)를 검사하는 하드웨서 추가시 1 stall
2. Branch 예측
: 예측이 잘못되었을 때만 stall
(잘못된 경우에만 stall 되니깐 옳은 경우에는 편하게 ㄱㄱ할수 있음)
(stall 되면 프로그램 시간 지연되니까 안 좋은 겁니다)
- branch 조건이 만족되지 않는다고 가정
- 맞으면 대박(stall 안하고 실행 가능하니깐), 안 맞으면 stall
3. More-Realistic 예측
정적 branch 예측
- 확률이 더 높은 일반적인 branch 경향을 선택
동적 branch 예측
- 미래에도 같은 경향성을 유지할 것이라 판단
Pipeline registers
: Stage 간 register 필요
(ex1)
Load ( lw rd, imm(rs1) )
Store의 경우 WB에 표시 X
Pipelined Control
- Control 신호가 나오면 일단 갖고 있는 신호를 다 보내고, 쓰는 신호는 사용, 안 쓰는 신호는 다시 레지스터에 실어보냄
'⚙️Computer System > 컴퓨터구조' 카테고리의 다른 글
🖥️ 컴퓨터구조 - Memory! (0) | 2024.05.23 |
---|---|
🖥️ 컴퓨터구조 - pipelining hazard 중 Forwarding 조건 & 동적 branch 예측 (0) | 2024.05.11 |
🖥️컴퓨터구조 - simple processor (0) | 2024.04.30 |
🖥️컴퓨터구조 과제3 📚 (0) | 2024.04.30 |
🖥️ 컴퓨터구조 - RISC-V format instructions (기말 여부터) (0) | 2024.04.28 |