1. A method to manage instruction cache prefetching from an instruction cache comprising: storing information about instruction cache misses, wherein the information includes an instruction cache line address, branch target characteristics including a type of branch indicator, the confidence of the prediction, and a branch address; identifying common instruction cache misses; predicting the outcome of a branch and providing a confidence of the prediction; for an indirect branch, inserting, regardless of the confidence, a prefetch instruction from a prefetch engine to the instruction cache; and for a direct branch, inserting the prefetch instruction from the prefetch engine to the instruction cache is based upon whether the taken branch had a strong prediction or a weak prediction and the prefetch instruction is executed or not executed dependent upon the confidence of the prediction.