Oberon space
General Category => Общий раздел => Тема начата: Губанов Сергей Юрьевич от Ноябрь 12, 2014, 11:25:13 am
-
Есть тут кто живой?... :)
-
Черт.. Сергей.. вот честно только что увидел - аналогичный пост во флуде... :)
-
Ну, как бы то есть... Есть ;-)
-
чо стучишься в дверь моя? видишь, дома нет никто...
-
Просто новая цива вышла, вот и нет ни кого
-
Кто нибудь префетчем памяти пользовался для оптимизации быстродействия?
На x64 это:
#include <xmmintrin.h>
_mm_prefetch(pointer, flags)
Я попробовал -- охрененно термоядерная штукенция. Загрузка данных из DDR3 1600 в кэш процессора отнимает примерно 80 наносекунд. Это около 300 тактов ничегонеделания. Если знаешь наперёд какие данные понадобятся в будущем, то заранее говоришь процу чтоб он загрузил их в кэш. Программа реально в несколько раз быстрее начинает работать.
-
Кто нибудь префетчем памяти пользовался для оптимизации быстродействия?
На x64 это:
#include <xmmintrin.h>
_mm_prefetch(pointer, flags)
Я попробовал -- охрененно термоядерная штукенция. Загрузка данных из DDR3 1600 в кэш процессора отнимает примерно 80 наносекунд. Это около 300 тактов ничегонеделания. Если знаешь наперёд какие данные понадобятся в будущем, то заранее говоришь процу чтоб он загрузил их в кэш. Программа реально в несколько раз быстрее начинает работать.
Вот тут вроде подробно рассказано что, как и зачем: http://rus-linux.net/lib.php?name=/MyLDP/hard/memory/memory-6-7.html
Но этот префетч он каждый раз зависит от конкретной модели CPU, то есть код да, может получиться быстрым, но только для одной конкретной модели. То есть это хорошо когда знаешь на каком железе будут гонять твою программу, а когда не знаешь - это довольно бесполезно (ну или по CPUID смотреть и делать под каждый CPU свои аргументы - но это дикий геморрой, и обычно игра не стоит свеч).
-
А у нас программно-аппаратный комплекс. Пишется под конкретную железяку. И, кстати, она не x64.
А hugepages memory кто-нибудь баловался? Тоже атомный термояд! На той железяке что у нас, размещение данных в hugepages ускоряет доступ к памяти в 2 раза по сравнению с размещением данных в обычных страницах памяти!
-
А у нас программно-аппаратный комплекс. Пишется под конкретную железяку. И, кстати, она не x64.
Ужель x86 обычное? Или какой-нибудь Зеон Фай? ;-)
-
Она 64 разрядная, но другой архитектуры http://www.tilera.com/
-
Она 64 разрядная, но другой архитектуры http://www.tilera.com/
А всякие _mm_prefetch это ж чисто интеловские штуки. Или они там стараются по builtins'ами быть совместимыми? Ну и вообще, на разных архитектурах это все может дать совершенно разный эффект. Масса нюансов же.
-
Там аналогичная функция тоже есть, но называется по другому и другие аргументы имеет.
Ещё там чуть большая свобода выбора для программиста как именно память кэшировать.
-
Там аналогичная функция тоже есть, но называется по другому и другие аргументы имеет.
Ещё там чуть большая свобода выбора для программиста как именно память кэшировать.
Узкоспециализированное железо вообще няшно. То есть не предназначенное для удовлетворения любой прихоти домашнего пользователя. Говорят в приставках так там вообще можно четко говорить в какую память что класть (в быструю (работающую на частоте процессора) или же в медленную).