<p>Designing cost sensitive embedded products such as cellular phones and portable media players requires maximizing a platform?s performance while minimizing energy use. For example, if two software implementations of an MPEG-4 decoder perform quite differently on the same target platform, clearly the more efficient version will result in a more cost-effective product. Developing efficient embedded software requires a wide range of knowledge and skills. Programmers must have a good understanding not only of the target algorithms and target processor?s intricacies, but also of a program?s overall performance behavior. For example, if a program execution incurs extra performance overheads from resource conflicts, such as conflict cache misses, programmers should identify and eliminate the problems for maximum performance. In addition, programmers should be able to remove hot spots that could degrade a program?s overall perfomance.</p>