Как Direct mapped cache реализует пространственную локальность? - PullRequest
0 голосов
/ 30 ноября 2018

Массив объявлен как floatA [2048].Каждый элемент массива имеет размер 4 байта. Эта программа запускается на компьютере, который имеет кэш данных прямого отображения размером 8 КБ, с размером блока (строки) 16 Байт.Какие элементы массива конфликтуют с элементом A [0] в кэше данных?

В конечном итоге A [0], A [512], A [1024], A [1536] отображаются в блок кэша0

Насколько я понимаю, когда A [0] требуется в первый раз, A [0], A [1], A [2], A [3] (поскольку один блок кэша может содержать4 элемента) заносятся в кеш и помещаются в кеш блоков 0, 1, 2 и 3 соответственно.

Другой подход состоял бы в том, чтобы принести только A [0] и поместить его в блок 0 кэша. (Пространственная локальность здесь не используется)

Какова общая практика в таком сценарии?

1 Ответ

0 голосов
/ 04 декабря 2018

Все четыре элемента A [3: 0] хранятся в блоке 0 кэша - поскольку эти 4 элемента вместе образуют 16B.В зависимости от того, как настроена аппаратная система, следующие 16B затем сохраняются в блоке 1 кэша (решение о том, какая строка кэша (грань смежных данных 16B) отображает, какой набор сделан при проектировании оборудования и основан на определенных битахадрес.

...