Data Hazard: RAW, WAR, WAW
포스트 난이도: HOO_Middle
# Data Hazard
ILP에서 Pipelining을 사용하게 되면 발생할 수 있는 Hazard 중 하나가 Data hazard이다.
명령어를 실행하는 과정 자체에서 병렬 구조를 가지면서 연속성을 가진 파이프라인은 효율성을 증대시키는 반면에 잘못된 구조를 가지고 있을 경우 Data hazard가 발생한다.
Data hazard는 특정 Data가 dependency를 가지고 있을 때, 이를 고려하지 않은 명령어 Sequence로 인해 발생한다.
이로 인해 처리되는 Process가 늦어지거나 Process 자체 문제가 발생할 수 있다.
Data hazard는 세가지의 유형이 있다.
# RAW, WAR, WAW
우선 RAW는 Read After Write의 줄임말로써 Read 과정이 끝나기 전에 Write이 이루어진 Data hazard에 해당한다.
한마디로 특정 register의 처리가 다 끝나지도 않았는데 해당 register를 사용하면서 발생하는 Hazard이다.
RAW는 True dependence라고도 불린다.
아래와 같은 예시가 RAW가 발생한 경우이다.
EX.
I1: R3 <-- R1 op R2
I2: R5 <-- R3 op R4
Pipelining에서 Instruction 1에 R3라는 레지스터가 정의 또는 계산이 되고 I2라는 Instruction 2에는 R5라는 레지스터의 계산이 이루어진다.
문제는 I1의 R3가 아직 최종적으로 saved가 되지 않았음에도 R5에서 fetching이 이루어지기 때문에 Data hazard가 발생한다.
이러한 경우를 Read가 전부 이루어지기 전에 Write가 발생하였다고 해서 RAW라고 부른다.
다음으로 WAR은 Read 전에 Write가 먼저 이루어지거나 동시 실행이 될 경우를 의미한다.
WAR는 Anti dependence라고도 불리며, 아직 데이터가 stored 되지 않았는데 fetching이 이루어지는 경우를 나타낸다.
EX.
I1: R3 <-- R1 op R2
I2: R1 <-- R4 op R5
위와 같은 경우가 WAR에 해당한다.
I1에서 R1을 fetching 또는 Read하고 있지만 I2에서는 R1에 대해서 Write이 이루어지고 있다.
이런 식으로 동시 실행이 될 경우 Data hazard에 해당하며 이를 WAR 또는 Anti dependence라고 한다.
마지막으로 WAW는 Write After Write이라는 의미를 가지고 있다.
WAW도 concurrent excution인 상황에서 발생하는 Data hazard이다.
Write가 이루어지고 같은 레지스터에 또 다른 Write가 이루어질 경우 첫 번째 Write의 작업이 끝날 때까지 전체 Process는 Delayed 된다는 문제를 가진다.
EX.
I1: R3 <-- R1 op R2
I2: R5 <-- R3 op R4
I3: R3 <-- R6 op R7
위의 경우가 WAW에 해당한다.
R3 레지스터가 끝나기 전에 I3에서 R3에 새로운 write가 이루어진다.
이 경우 첫번째 I1의 프로세스가 다 이루어질 때까지 delayed 되는 문제를 가지게 된다.
'Computer Science' 카테고리의 다른 글
[Operating System] Memory-mapped I/O Maps (0) | 2022.05.03 |
---|---|
[Programming] Addressing Mode: Immediate Mode, Indirect Mode, Direct Mode (0) | 2022.04.13 |
[Automata] Proof Statements by using Backward [Temp] (0) | 2022.04.13 |
[Programming] Instruction Level Parallelism(ILP), Pipelining (0) | 2022.04.12 |
[Programming] CISC vs RISC (0) | 2022.04.11 |
댓글