Comments 23
Это всё очень сильно проявляется у процессоров с архитектурой Intel, и довольно слабо – на Apple Silicon, где память впаяна в процессор и кеш не является бутылочным горлышком.
Латентность памяти в эплах не меньше чем на х86.
Пропускная способность больше.
Они там пропускную способность крайне интересно считают...
пропускная способность != латентность, время ожидания блока считается как `латентность+размер блока/пропускная способность`
вся запись все равно идет через L1 и если у вас промах по кешу то вам все равно сидеть и ждать пока данные приедут, даже если их приедет больше
Всё верно, но в итоге большой блок приедет быстрее.
Я проводил сравнения, и получилось, что если на процессоре Intel последовательный и непоследовательный доступ к ячейкам памяти различался по скорости примерно в два раза, то на Apple различие было в пределах 1%.
ЗЫ
Если говорить за х86, то там есть группа команд которая идёт как бы... "сквозь кэш". Позволяя писать в память на полной скорости, обычные обращения кэшируются и мне народ пишет "видите, скорость записи вертексов в 2 раза медленнее чем чтение!!! Нас обмануют!!!"
У эппла восемь каналов памяти, а не два как у интела, само-собой пропускная способность больше. Вон на эпиках те же восемь каналов и пропускная способность точно такая же. Архитектура тут не при делах совершенно.
Я думал что такого мифа на самом деле нет.
Но вы меня переубедили - первый комментарий подтверждает, что миф есть.
латентность разведённой памяти не сильно ниже DDR (и гораздо больше зависит от стратегии в контроллере памяти, чем от физической схемы).
Пропускная способность может быть выше, но приведённые примеры намного больше упираются в латентность (и prefetch / eviction кэшей).
Вроде дело не в расстоянии, оно не велико, дело в частотах.
Время обращения к кешу L1 на 2 порядка, и к L2 на один порядок меньше, чем к ОП потому что чтение из памяти завязано на частоту памяти и циклы чтения/записи.
Довольно странная рекомендация - для уменьшения промахов кэша использовать сортировку. Кажется что сама по себе сортировка каких-то не примитивных объектов создаст больше промахов кэша чем потенциальный выигрыш.
там идея в том что сам elements то как раз вектор и его сортировка не так уж плоха для кеша, а вот каждый element из elements указывает уже в разнобой и действительно может постоянно промахиваться по кешу
Кажется что сама по себе сортировка каких-то не примитивных объектов создаст больше промахов кэша чем потенциальный выигрыш.
Кажется.
Я как раз занимаюсь в своём хобби-проекте переносом стратегии "B-tree на HDD" на "B-tree в RAM". Мне там постоянно нужны три функции: Поиск, Вставка и Удаление. А данных там - . И скорость их обработки нужна максимальная. Так что подход, и алгоритм задачи, очень близок к этой статье. Пока я ещё не реализовал эту задачу в программе, но проектирую уже его детали и нюансы в прикладной области. Чувствую, что придётся тестировать по многообразию параметров - как исходных, так и промежуточных (в схеме разделения на непрерывные блоки, организации их связей между собой, и т.д). Ещё и память надо оптимизировать...
Хотелось бы сразу сделать идеально, но знаю, что так не бывает. Только практика (тесты) покажут, как оно на самом деле. Но вот по теоретической части, в которой я ещё только новичок, думаю можно избежать неявных косяков. Где бы о таком узнать, почитать?
В этом году был доклад на эту тему - B-tree Optimisation for Numerical In-memory Indexes | Talk at С++ Russia 2024 (слайды cpp-russia-03-06.pdf)
Так в чем же заключается миф о RAM? Так за счет чего мы получили ускорение, даже если данные не помещаются в кэш? Статья не соответствует заголовку.
Миф о всемогуществе RAM. :)
Многие считают, что если [многочисленные] данные уже в оперативной памяти, то их обработка (последовательно, или в случайном порядке) пойдёт уже на максимальной скорости. Такая вот логическая связка, возникшая во времена, когда "640Кб хватало для всего".
Статья о том, что на гигантских объёмах информации требуется современная аппаратура специальная техника программирования, с учётом нюансов работы современной аппаратуры.
Миф о RAM