Data speculation refers to the execution of instructions before it has been determined that the data being used is valid. Data speculation depends on dynamic memory disambiguation to determine if the data was valid, and forces recovery code to execute if the data was invalid. A data speculation compiler generates recovery code to handle the situation where such execution violates a memory dependence. This project examines data speculation techniques, and attempts to understand how to utilize them more effectively. The issues addressed are (1) using data speculation with predication, (2) improving the scheduling algorithms used with it, and (3) using static analysis to help determine when it should be applied. This work will be done using the Memory Conflict Buffer (MCB) technique for dynamic disambiguation. The concepts will be developed so they are applicable to other forms of dynamic memory disambiguation. ***