Что подразумевается под кешем данных и кешем инструкций?
ОтВот:
Инструкции и данные имеют разные схемы доступа и обращаются к разным областям памяти. Таким образом, наличие одного и того же кэша для инструкций и данных может не всегда работать.
Таким образом, довольно часто иметь два кэша: кэш команд, в котором хранятся только инструкции, и кэш данных, в котором хранятся только данные.
Интуитивно понятно различие между инструкциями и данными, но теперь я не уверен в разнице в этом контексте? Что представляет собой данные и помещается в кэш данных, а что представляет собой инструкции и помещается в кэш команд?
Я знаю сборку ARM. Будет что-нибудь требующееSTR
, LDR
, LDMF
или жеSTMFD
использовать кеш данных? Но технически говоряSTR
, LDR
, LDMF
а такжеSTMFD
все инструкции, так что я, поэтому я запутался. Должны ли «данные» всегда существовать с «инструкцией»? Рассматриваются ли данные в.data
раздел?
НапримерLDR R1, =myVar
тогда LDR попадет в кеш инструкций, а содержимое myVar попадет в кеш данных? Или это так не работает?
Инструкции и данные имеют разные схемы доступа. Может кто-нибудь уточнить?
Этот комментарий, который я сделал на полезном посте, подчеркивает мое затруднение понимания:
«Идея состоит в том, что если инструкция была загружена из памяти, она, вероятно, скоро будет использована снова», но единственный способ узнать следующую инструкцию - это прочитать ее. Это означает, что чтение из памяти (вы не можете сказать, что оно уже в кеше, потому что новая инструкция красного цвета). Так я до сих пор не вижу смысла? Скажем, инструкция LDR только что произошла, так что теперь LDR находится в кеше данных. Может быть, произойдет еще одна инструкция LDR, а может, и нет, мы не можем быть уверены, поэтому нам нужно на самом деле прочитать следующую инструкцию - тем самым победив цель кэширования.