Hazard가 발생하는 상황이란 다음 사이클에 다음 Instruction을 수행할 수 없을 때를 말한다.
Hazard는 종류에 따라 Structural/Data/Control Hazard로 구분할 수 있다.
1. Structural Hazard
구조적인 문제로 인하여 발생하는 Hazard를 말한다. 예를 들어 어떤 자원을 사용하는 데 충돌이 발생하는 경우이다. IF - ID - EX - MEM - WB 로 구분되는 5-Stage Pipeline를 기존으로 생각해보자.
각 Stage이 어떤 자원을 사용하는 지 확인해보자.
IF : Memory // Memory로부터 Instruction을 읽어옴.
ID : Register // Instruction decode 이후 register로부털 operand를 읽어옴.
EX : Comb logic // Instruction Execute
MEM: Memory // Memory를 접근하여 data 처리
WB : Register // 수행 결과를 Register에 쓰기.
잘 살펴보면, 동일한 자원을 사용하는 Stage 들이 존재함을 알 수 있다.
Memory -> IF / MEM
Reigister -> ID / WB
만약 해당 자원을 한 사이클에 한번만 사용가능하다고 하면 둘 중 하나의 Stage는 수행되지 못하고, 다음 사이클을 기다려야 한다.
이를 해결하고자, Memory는 I Cache(for IF)와 D Cache(for MEM)으로 분리하고, Register는 Multi-port(2-Read for ID, 1-Write for WB)를 사용한다.
2. Data Hazard
일반적으로 Read After Write를 수행할 때 발생한다.
아래의 예제 처럼 이전 instruction의 결과가 연산 과정에서 필요한 경우가 있다.
add x19, x0, x1
sub x2, x19, x3
이럴 경우, 해당 연산 결과를 얻기 전까지 다음 Instruction은 수행될 수 없다.
이를 해결하기 위해서, 결과를 얻기 전까지 기다리거나, 계산 결과를 최대한 앞당겨서 사용할 수 있도록 하거나(Forwarding) 해당 순서가 발생하지 않도록 컴파일러가 스케쥴링을 할 수 있다.(Compiler scheduling)
3. Control Hazard
Control Hazard는 branch로 인하여 발생하는 hazard이다. branch의 결과에 따라 수행되는 다음 instruction이 달라질 수 있으므로 다음 instruction의 수행이 늦어질 수 있다.
이를 해결하기 위해서, 결과를 얻기 전까지 기다리거나, Branch 결과를 예상하여 미리 수행하고 있다가 결과가 다를 경우 다시 복원하거나(Branch prediction), Branch 결과를 기다리되 기다리는 동안 멈추지 않고, 수행할 수 있는 Instruction을 찾아서 수행할 수 도 있다.(Delayed branch)
Branch Prediction은 Static/Dynamic으로 구분될 수 있으며, Static은 예를 들어 앞으로 나가는 Branch는 not Taken, 뒤로 돌아가는 Branch는 Taken를 수행한다. for문을 보면 loop에 있다면 계속 뒤로 돌아갈 것이고, loop가 끝나면 앞으로 나갈 것이다. 이와 같이 보통의 동작을 통해서 static하게 정해둔다.
Dynamic은 현재 branch predition을 이전 histroy를 통해서 분석하여 동적으로 선택될 수 있도록 한다.
'IT_Study > CS_Study' 카테고리의 다른 글
[Parallel Computing] (16) Tiling for Matrix Multiply (0) | 2024.05.25 |
---|---|
[Parallel Computing] (15) Cache Coherence (0) | 2024.05.25 |
[Computer Architecture] (8) CISC vs. RISC (0) | 2024.04.29 |
[Computer Architecture] (7) Instruction Example (0) | 2024.04.28 |
[Computer Architecture] (6) Array vs Pointer (2) | 2024.04.28 |
댓글