1. A system for profiling instructions of a program and for selecting a trace of a portion of the instructions of the program, the system comprising: a hardware portion for detecting which instructions of the program are more frequently executed and for maintaining a history of targets chosen by branch instructions of the program; and a software portion for forming the trace of the most frequently executed instructions and using the history in making branch predictions for branch instructions encountered in forming the trace.