As time progresses  computer architects continue to create faster and more complex microprocessors using techniques such as out-of-order execution  branch prediction  dynamic scheduling  and predication While these techniques enable greater performance  they also increase the complexity and silicon area of the design