Register renaming
Instead of delaying the write until all reads are completed, two copies of the location can be maintained, the old value and the new value.  Reads that precede, in program order, the write of the new value can be provided with the old value, even while other reads that follow the write are provided with the new value.  The false dependency is broken and additional opportunities for out-of-order execution are created.  When all reads needing the old value have been satisfied, it can be discarded.  This is the essential concept behind register renaming.