Войти
ПрограммированиеФорумОбщее

Кэш-промах (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
3:14, 4 мар. 2011

Pushkoff
> то что ты описал это следствие неправильной работы с данными...
То, что я описал - это следствие правильной работы с данными. А такие как ты делают большой массив и думают что промахи неизбежны, поэтому получается кривой тормознутый говнокод, так как процессор воспринимают за чёрную коробку.
> можно получать кешпромах при каждом обращении к массиву из 2 байт
А можно штаны через голову одевать.

ashujon
> чушь
Пусть это будет чушь, удачи в говнокодировании ;)
Вот в таком, да:
> кеш промахи будут всегда чтобы ты не делал


#16
4:10, 4 мар. 2011

> А такие как ты делают большой массив и думают что промахи неизбежны, поэтому получается
> кривой тормознутый говнокод, так как процессор воспринимают за чёрную коробку.
Изображение

#17
5:35, 4 мар. 2011

как всегда, свелось к - "это ты козёл, нет это ты козёл и всё твои родственники ... " :)

#18
6:20, 4 мар. 2011

SNVampyre
> А такие как ты делают большой массив и думают что промахи неизбежны
первое обращение к любым данным - это кеш промах. то есть даже теоретически нельзя совсем избавиться от кешпромахов, что и означает что они неизбежны...
размещать данные маленькими блоками, это один из методов борьбы с кешпромахами, и этот метод может навредить точно так же как и помочь...
погугли про AoS & SoA...

#19
10:20, 4 мар. 2011

Автору: Если нужно заюзать массив указателей на и что бы не было кеш промахов, нужно использовать пулы для объектов, это существенно улучшит ситуацию.

#20
10:32, 4 мар. 2011

SNVampyre
> То, что я описал - это следствие правильной работы с данными. А такие как ты
> делают большой массив и думают что промахи неизбежны, поэтому получается кривой
> тормознутый говнокод, так как процессор воспринимают за чёрную коробку.
ну тогда ты наверно сможешь ответить на простой вопрос - а как данные в кеш попадают? т.е. ты считаешь что когда ты обращаешься к кусочку памяти ( а ты ведь понимаешь что массив это абстракция языка? ) то компилятор генерит такой кошерный код, который говорит - процесор, загрузи пожалуйств вот столько то памяти, такого то размера в кеш. а если юзать другой масив - то снова его грузит весь в кеш? и от этих постоянных загрузок масивов целиком и тормоза?

#21
10:40, 4 мар. 2011

kas
> а как данные в кеш попадают?
на это вопрос могу даже я ответить: это все белая магия (черную он исключил чуть выше)...

#22
10:59, 4 мар. 2011

в SSE есть PREFETCH* 

#23
11:16, 4 мар. 2011

innuendo
префетч есть не только в ссе. только причом здесь он?...

#24
11:59, 4 мар. 2011

innuendo
в GCC есть встроенная команда...

#25
12:01, 4 мар. 2011

SNVampyre
> Промах кэша - это когда например 65536 Байт быстро, а 65537 уже заметно
> медленнее
prefetch
вообще он как бы еще автоматом делается, данные подгружаются в следующую линейку пока идет работа с предыдущей. Есть и инструкция также чтобы руками это контролировать.

#26
12:04, 4 мар. 2011

kas
Сам механизм префетчинга очень даже причем. И инструкции как раз были даны программисту чтобы его контроллировать и "помогать" процессору стримить  нужные данные в кэш где-то там в фоне, пока идет работа с текущими

#27
12:11, 4 мар. 2011

d.m.k
> Сам механизм префетчинга очень даже причем. И инструкции как раз были даны
> программисту чтобы его контроллировать и "помогать" процессору стримить нужные
> данные в кэш где-то там в фоне, пока идет работа с текущими
и? как это помогает ответить на вопрос топикстартера? или развеять невежество снвампира?

#28
13:43, 4 мар. 2011

kas
так и помогает
на больших массивах работает авто-префетч, на слишком рандомном доступе можно хоть как-то помочь процессору соотв. инструкциями. Это не панаценя, но помогает. А топикастер должен как бы знать, что элементы массива в памяти располагаются последовательно (чем бы мы его не выделяли) и делать соответствующий вывод.

вот Pushkoff годную тему предложил погуглить. Не так давно была тут речь про это и ссылки были на статью хорошую с бенчмарками

#29
13:45, 4 мар. 2011
kas
Можно подумать твои два поста охренеть как помогают Бугага!
Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.