Основная причина: производительность.Другая причина - энергопотребление.
Раздельный dCache и iCache позволяют получать инструкции и данные параллельно.
Инструкции и данные имеют разные шаблоны доступа.
Запись в iCacheредкиРазработчики ЦП оптимизируют iCache и архитектуру ЦП, исходя из предположения, что изменения кода происходят редко.Например, Руководство по оптимизации программного обеспечения AMD для 10-часовых и 12-часовых процессоров гласит:
Предварительное декодирование начинается при заполнении кэша инструкций L1.Информация предварительного кода генерируется и хранится вместе с кешем инструкций.
В процессоре Intel Nehalem имеется буфер с обратной связью, а в дополнение к этому процессор Sandy Bridge имеет кэш-память µop Микроархитектура Intel, AMDи VIA CPU .Обратите внимание, что эти функции относятся к коду и не имеют прямого аналога в отношении данных.Они повышают производительность, а поскольку Intel «запрещает» разработчикам ЦП вводить функции, которые приводят к чрезмерному увеличению энергопотребления, они, по-видимому, также выигрывают от общего энергопотребления.
Большинство ЦП имеют сеть пересылки данных (от хранилища к пересылке нагрузки),В отношении кода не существует «пересылки с сохранением для загрузки», просто потому, что код изменяется гораздо реже, чем данные.
Код демонстрирует иные шаблоны, чем данные.
Тем не менее, большинство процессоров в настоящее время имеют унифицированный кэш L2, который содержит и код, и данные.Причина этого заключается в том, что наличие отдельных кэшей L2I и L2D будет бессмысленно потреблять транзисторный бюджет, если не будет обеспечен какой-либо ощутимый прирост производительности.
(Конечно, причина наличия отдельных iCache и dCache не уменьшена сложность, потому что если бы причиной была уменьшенная сложность, то не было бы никакой конвейерной обработки ни в одной из текущих конструкций ЦП. ЦП с конвейерной обработкой является более сложным, чем ЦП без конвейерной обработки. Мы хотим повышенной сложности. Дело в том, что следующая конструкция ЦП (обычно) более сложная, чем предыдущая.)