record conversation snippet
[libreriscv.git] / 3d_gpu / microarchitecture.mdwn
index f2c363d4229cda8b8190989bd498b9e94cae50e4..07576242a0813388fc201b299287ed58cb1cf4fd 100644 (file)
@@ -156,15 +156,40 @@ because actual updating of memory occurs in order, when a store is at
 the head of the ROB, and hence, no earlier loads or stores can still
 be pending
 * RAW hazards are maintained by two restrictions:
-    1. not allowing a load to initiate the second step of its execution if
-      any active ROB entry occupied by a store has a destination
-      field that matches the value of the A field of the load and
-    2. maintaining the program order for the computation of an effective
+  1. not allowing a load to initiate the second step of its execution if
+    any active ROB entry occupied by a store has a destination
+    field that matches the value of the A field of the load and
+  2. maintaining the program order for the computation of an effective
       address of a load with respect to all earlier stores
 * These restrictions ensure that any load that access a memory location
   written to by an earlier store cannot perform the memory access until
   the store has written the data.
 
+Advantages of Speculation, Load and Store hazards:
+
+* A store updates memoryy only when it reached the head of the ROB
+* WAW and WAR type of hazards are eliminated with speculation
+  (actual updating of memory occurs in order)
+* RAW hazards through memory are maintained by not allowing a load
+  to initiate the second step of its execution
+* Check if any store has a destination field that matched the
+  value of the load:
+    - SD F1 100(R2)
+    - LD F2 100(R2)
+
+Exceptions
+
+* Exceptions are handled by not recognising the exception until
+  instruction that caused it is ready to commit in ROB (reaches head
+  of ROB)
+
+Reorder Buffer
+
+* Results of an instruction become visible externally when it leaves
+  the ROB
+    - Registers updated
+    - Memory updated
+
 # References
 
 * <https://en.wikipedia.org/wiki/Tomasulo_algorithm>