Skip to content

Commit 8b2fb3e

Browse files
authored
Merge pull request algorithmica-org#77 from Qrbaker/prose-patch-1
Missing article ("are") in sentence.
2 parents eee4be5 + e6f1307 commit 8b2fb3e

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

content/english/hpc/pipelining/hazards.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
title: Pipeline Hazards
33
weight: 1
4+
published: true
45
---
56

67
[Pipelining](../) lets you hide the latencies of instructions by running them concurrently, but also creates some potential obstacles of its own — characteristically called *pipeline hazards*, that is, situations when the next instruction cannot execute on the following clock cycle.
@@ -17,7 +18,7 @@ The only way to resolve a hazard is to have a *pipeline stall*: stop the progres
1718

1819
Different hazards have different penalties:
1920

20-
- In structural hazards, you have to wait (usually one more cycle) until the execution unit is ready. They fundamental bottlenecks on performance and can't be avoided — you have to engineer around them.
21+
- In structural hazards, you have to wait (usually one more cycle) until the execution unit is ready. They are fundamental bottlenecks on performance and can't be avoided — you have to engineer around them.
2122
- In data hazards, you have to wait of the required data to be computed (the latency of the *critical path*). Data hazards are solved by restructuring computations so that the critical path is shorter.
2223
- In control hazards, you generally have to flush the entire pipeline and start over, wasting whole 15-20 cycles. They are solved by either removing branches completely, or making them predictable so that the CPU can effectively *speculate* on what is going to be executed next.
2324

0 commit comments

Comments
 (0)