Often, a system’s instruction cache will be significantly smaller (two to four times) than its data cache. This is because the instructions for a program generally take up much less memory than the program’s data. Also, most programs spend the majority of their time in loops that reuse the same instructions multiple times. As a result of this, a system’s instruction cache can be significantly smaller than its data cache and have the same hit rate, so designers often choose to devote more chip area to the data cache than the instruction cache.