related: Почему Skylake намного лучше, чем Broadwell-E для пропускной способности однопоточной памяти? двух контроллеров памяти достаточно для пропускной способности однопоточной памяти.Только если у вас есть несколько потоков / процессов, которые все пропускают в кеше лот , вы начинаете извлекать выгоду из дополнительных контроллеров памяти в большом Xeon.
(например, ваш пример из комментариев выполнениямногие независимые задачи обработки изображений на разных изображениях параллельно могут это делать, в зависимости от задачи.)
Переход с двух каналов на один DDR4 может повредить даже однопоточную программу на четырехъядерном процессоре если это было узкое место в полосе пропускания DRAM большую часть времени, но одна важная часть настройки производительности - это оптимизация повторного использования данных, чтобы вы получали как минимум попадания в кэш L3.
Умножение матриц являетсяклассический пример: вместо зацикливания строк / столбцов матрицы целом N ^ 2 раза (что слишком велико для размещения в кэше) (одна точка x произведение столбцов для каждого выходного элемента) вы разбиваетеработайте с «плитками» и вычисляйте частичные результаты, так что вы будете многократно повторять циклы по плитке матрицы, которая остается горячей в кэш-памяти L1d или L2.(И мы надеемся, что узкое место в пропускной способности FP ALU, при выполнении инструкций FMA, а не в памяти вообще, потому что matmul берет O (N ^ 3) операций умножения + добавления над N ^ 2 элементами для квадратной матрицы.) Эти оптимизации называются «разбиением на петли»"или" блокировка кеша ".
Такой хорошо оптимизированный код, который затрагивает много памяти, может часто выполнять достаточно работы, выполняя зацикливание, что он фактически не является узким местом в пропускной способности DRAM (пропадание кеша L3) в большинстве случаев.время.
Если одного канала DRAM достаточно для того, чтобы не отставать от запросов аппаратной предварительной выборки о том, как быстро / медленно код фактически затрагивает новую память, замедления из-за пропускной способности памяти не будет.(Конечно, это не всегда возможно, и иногда вы делаете цикл по большому массиву, выполняя не очень большую работу или даже просто копируя его, но если это составляет лишь небольшую долю от общего времени выполнения, это все равно не имеет значения.)