1. A processor to manage instruction cache prefetching from an instruction cache comprising: a prefetch engine; a branch prediction engine to predict the outcome of a branch; and a dynamic optimizer to control: identifying common instruction cache misses; and inserting a prefetch instruction from the prefetch engine to the instruction cache.