
Построить всю оперативную память на сверхскоростных элементах SRAM невозможно (вернее, слишком дорого), а вот создать промежуточный буфер сравнительно небольшого размера, динамически перемещая в него наиболее востребованную информацию – задача вполне выполнимая. Реализация этой концепции в виде кэш-памяти, кроме всего прочего, позволила согласовать быстродействие CPU и DRAM.
Насколько эффективно это получилось у каждого из процессорных гигантов: Intel и AMD? Сравним сильные стороны чипов i5-8400 и Ryzen 5 1600, по возможности избегая фрейдистских ненужных аналогий. В качестве стендовой платформы с первым из них используется ASUS Prime B360 Plus, а CPU от AMD поможет проявить себя MSI X370 XPower Gaming Titanium.
Рис1. В качестве стендовой платформы с процессором Intel используется ASUS Prime B360 Plus
Intel: ставка на AVX
Воспользуемся утилитой NCRB для измерения производительности кэш-памяти исследуемых процессоров.
Рис 2. Зависимость скорости чтения от размера блока в окрестности объема кэш-памяти L1,
чтение выполняется шестью потоками, процессор Intel Core i5-8400
На графиках по оси X откладывается размер обрабатываемого (в данном примере повторно считываемого) блока данных. Ось Y соответствует скорости чтения. Пока размер блока меньше размера кэш-памяти L1, блок помещается в кэш и поэтому скорость доступа к нему высокая. При выходе за пределы L1, вследствие появления L1-промахов, скорость падает. В силу сказанного, при оценке скорости L1 наиболее информативной является «верхняя ступенька», соответствующая левому участку графика и максимальной скорости.
Рис 3. Зависимость скорости чтения от размера блока в окрестности объема кэш-памяти L1,
чтение выполняется шестью потоками, процессор AMD Ryzen 5 1600
Максимальная скорость в мегабайтах в секунду (MBPS) соответствует минимальному количеству тактов на инструкцию (CPI, Clocks Per Instruction) и составляет около 1457320 MBPS для процессора Intel и 653022 MBPS для процессора AMD. Измерение выполняется в 6 потоков (по количеству ядер исследуемых чипов). Для чтения данных применена 256-битная форма AVX-инструкции VMOVAPD.
В качестве источника образцовых интервалов времени используется счетчик TSC (Time Stamp Counter). Поскольку при оверклокинге ядро процессора и TSC тактируются асинхронно, значения тактов TSC на инструкцию являются дробными величинами.
NB: Ранее мы знакомили читателя с методикой выполнения прецизионных измерений на основе параметра Actual Turbo Performance, выполненных UEFI-приложением с максимальным уровнем привилегий (ring0).
Поясним природу выигрыша Intel в этом сравнении. 256-битная AVX-загрузка занимает 0.5 такта (Intel) и 1 такт (AMD) для исследуемых процессоров при условии выровненных операндов (адрес которых кратен 32 байтам, что соответствует 256 битам). Следовательно, при равных тактовых частотах количество таких загрузок за единицу времени, определяющее скорость кэш-памяти, для процессора Intel будет вдвое выше.
Рис 4. В качестве стендовой платформы с процессором AMD используется MSI X370 XPower Gaming Titanium
AMD: ставка на размер
Воспользуемся утилитой JavaCPUID для определения параметров кэш-памяти.
Рис 5. Параметры кэш-памяти современных процессоров Intel определяются
с помощью функции CPUID #00000004h
Каждое из 6 ядер процессора Core i5-8400 CPU @ 2.80GHz снабжено кэш-памятью первого уровня по 32 KB для инструкций и данных, а также общим для инструкций и данных кэшем L2 размером 256 KB. Общий для инструкций и данных, а также общий для всех ядер кэш L3 имеет размер 9 MB.
Рис 6. Параметры кэш-памяти современных процессоров AMD определяются
с помощью функции CPUID #8000001D
Каждое из 6 ядер процессора AMD Ryzen 5 1600 Six-Core Processor снабжено кэш-памятью первого уровня 64 KB для инструкций и 32 KB для данных, а также общим для инструкций и данных кэшем L2 размером 512 KB. Общий для инструкций и данных, а также общий для групп ядер (nodes) кэш L3 имеет размер 8 MB на группу ядер.
Рис 7. Полный размер кэш-памяти L3 процессоров AMD определяется
с помощью функции CPUID #80000006h
Декларирование чипом AMD размера кэш-памяти L3 на группу ядер (L3 per node) потребовало использования дополнительной CPUID-функции, чтобы узнать полный размер L3 для процессора. Он составляет 16 MB. Каждая из двух групп ядер рассматриваемого процессора содержит 3 ядра и с учетом технологии Hyper-Threading может выполнять 6 потоков.
Расчет теоретических лимитов
Для оценки эффективности кэш-памяти был намеренно выбран сценарий тестирования, использующий наиболее производительный ресурс персональной платформы (L1 Cache), методом, обеспечивающим наивысшую производительность – чтение инструкциями AVX256. Хотя процессор AMD проиграл по скорости, отметим, что «болезни роста», вследствие которых одна векторная инструкция выполнялась медленнее, чем заменяющая ее последовательность скалярных инструкций, остались в прошлом. Вычислим теоретические скорости работы кэш-памяти для протестированных процессоров Intel и AMD с целью дополнительной верификации полученных результатов.
Чип Intel Core i5-8400 в режиме Turbo способен разгоняться до частоты 4.0 GHz (количество ядер – 6). За половину такта передается 256-битный операнд, что составляет 32 байта, следовательно, за один такт передается 64 байта:
- 4.0 * 6 * 64 = 1536 гигабайт в секунду
Запись занимает вдвое больше тактов:
- 4.0 * 6 * 32 = 768 гигабайт в секунду
Чип AMD Ryzen 5 1600 Six-Core в режиме Turbo способен разгоняться до частоты 3.6 GHz (количество ядер – 6). За один такт передается 256-битный операнд, что составляет 32 байта:
- 3.6 * 6 * 32 = 691.2 гигабайт в секунду
Запись занимает вдвое больше тактов
- 3.6 * 6 * 16 = 345.6 гигабайт в секунду
В данном упрощенном расчете не учитывается зависимость разгонного лимита от количества одновременно активных ядер и типа нагрузки (non-AVX, AVX): ведь на старой доброй инструкции MOV процессоры идут «ноздря в ноздрю». На практике, указанные обстоятельства несколько снижают частотные свойства процессоров, что видно по результатам измерений. Нелишне напомнить о влиянии системы охлаждения
Резюме
Анализируя особенности реализации доступа к кэш-памяти каждым из ведущих чип-мейкеров, можно предположить, почему лидер определяется в зависимости от условий соревнования…