Speculative Branch Tags
Branches must be resolved in program order (i.e, branches dispatched in program order).
If a branch prediction is correct, then all instructions have their branch tags decremented by one (tag value cannot be less than zero). Because branch tags are resolved in program order, branch tags equal to ‘1’, become ‘0’; the instructions with branch tag ‘2’ now become ‘1’ and will be resolved next.
If a branch prediction is incorrect, then all instructions with branch tags greater or equal to that branch tag are marked as invalid (in CRS, shelves are freed. In DRR, entries are marked empty. There is some problem with renaming, will talk about this later).
Instructions cannot be retired if under speculative execution!!!