On Sun, 16 Dec 2001, Slawa Olhovchenkov wrote:
> On Sun, Dec 16, 2001 at 03:56:42AM +0300, Khimenko Victor wrote:
>
> >> Ну не при случайной выброке -- а это главное
> KV> ЧЕГО ??? С каких это пор у нас обращения к памяти в программах задаются
> KV> геренратором случайных чисел ?
>
> С тех пор, как их начали писать с применениме развесистых плюсовых библиотек.
>
Хмм... Большая часть объектов куда как больше 16 байт. Да, часто бывает
так, что сначала идет обращение к первому полю в 4 байта первого объекта,
потом к десятку других объектов, и лишь потом - ко второму полю этого
объекта, ну так на то у нас данные передаются не только в проц, а еще и в
кеш. И не настолько эти библиотеки развесистые, чтобы вся информацию
вылетела их кеша: когда деятельность возвращается к первому объекту его
данные часто еще в L1 кеше (а уж в L2 - так почти наверняка).
> >> Арифметика на уровне 4 класса средней школы -- первое чтение
> >> срабатывает через 45 нс, все остальное -- обман.
> KV> ... а то, что на практике больше половины чтений происходит из ячейки,
> KV> непосредственно следующей за только что прочитанной - нас не касается.
>
> А что насчет чтения из (16/4=4) 4 непосредственно следующиих друг за
> другом ячеек? Ну пусть не 4, 3? Это именно тот случай, когда DDR
> начнет давть выйгрыш.
>
См. выше :-) Как раз вышеупомянутые развесистые боблиотеки приводят к
тому, что данные оттуда потребуются в большинстве случаев очень скоро (про
то, что у нас за один цикл обращения к памяти 20-30 команд процессора
могут исполниться еще не забыли?).
> KV> Ой ли ? Вспомни - с чего дисскуссия началась ? Со сканирования FD_SET'а и
> KV> массива pollfd. При практически интересном случае у тебя будет ОДИН
> KV> интересный бит в массиве объемом в килобайт, примерно. Как часто ты будешь
> KV> читать в такой постановке задачи из следующей, а не "случайной" ячейки ?
> KV> Правильно: в 99% случаев.
>
> Неправильно. Зависит от кривизны компилятора и кривизны рук
> программиста. Запросто эти чтения из массива pollfd могут быть
> разбавленны обращениями к другим ячейкам памяти.
>
Нее - там цикл простой, как песня: перебор элементов массива "от забора и
до обеда" и сравнение элементов с фиксированным числом. Иногда он таки
что-то находит и начинается бурная деятельность, но это происходит весьма
нечасто...
> KV> Ничига себе открытие: все изыскания разработчиков процессоров начиная с
> KV> Pentium'а, строка кеша в котором 16 байт, который в burst режиме
> KV> вытягиваются из основной памяти в надежде на то, что если какой байт
> KV> пригодился, то и следующий за ним, скорее всего, не лишним будет,
> KV> оказываются неверны... Хммм...
>
> Ну и как там с распределением частоты использования непрерывных
> последовательностей байтов?
Достаточно для того, чтобы у 1.5GHz процессора (Athlon или Pentium4)
DDR SDRAM давала выигрыш в 15-20% на ПРАКТИЧЕСКИХ задачах. На
синтетических тестах можно увидеть и 70%-80% (за счет того, что первый
байт таки запрашивается с одинаковой скоростью ускорения на 100% увидеть
нельзя независимо ни от чего), но это как-то не слишком интересно...
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =