Что такое семантика буферов Super Queue и Line Fill?

Я задаю этот вопрос относительно Haswell Microarchitetcure (процессор Intel Xeon E5-2640-v3). Из спецификаций CPU и других ресурсов я выяснил, что существует 10 LFB, а размер супер-очереди - 16. У меня есть два вопроса, связанные с LFB и SuperQueues:

1) Какова максимальная степень уровня памяти parallelism, которую система может предоставить, 10 или 16 (LFB или SQ)?

2) По некоторым источникам каждый промах L1D записывается в SQ, а затем SQ назначает буфер заполнения линии, а в некоторых других источниках они пишут, что SQ и LFB могут работать независимо. Не могли бы вы кратко объяснить работу SQ?

Вот пример (Не для Haswell) для SQ и LFB. введите описание изображения здесь Рекомендации: https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf

http://www.realworldtech.com/haswell-cpu/

Ответ 1

Для (1) логически максимум parallelism будет ограничен наименее параллельной частью конвейера, который является 10 LFB, и это, вероятно, строго верно для нагрузки спроса parallelism, когда предварительная выборка отключена или может Помогите. На практике все сложнее, когда ваш груз, по крайней мере, частично помогает путем предварительной выборки, так как тогда могут использоваться более широкие очереди между L2 и ОЗУ, которые могли бы сделать наблюдаемый parallelism больше 10. Наиболее практичным подходом является, вероятно, непосредственное измерение: учитывая измеренную задержку в ОЗУ и наблюдаемую пропускную способность, вы можете рассчитать эффективный parallelism для любой конкретной нагрузки.

Для (2) я понимаю, что это наоборот: все промашки спроса в L1 сначала выделяются в LFB (если, конечно, они не попадают в существующий LFB) и могут позже включать "суперэкспорту" (или что-то еще называется в эти дни), если они также пропущены выше в иерархии кеша. Включенная диаграмма, похоже, подтверждает, что: единственный путь от L1 находится через очередь LFB.