|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Lev Serebryakov 2:5030/661.1 24 Dec 2007 11:15:40 To : Alex Mogilnikov Subject : RAM --------------------------------------------------------------------------------
Hello Alex.
24 Dec 07 00:47, you wrote to me:
AM> А чем это плохо? Если память 64-разрядная, обращение к ней в любом
AM> случае произходит за 1 цикл?
Это плохо тем, что кэши у нас всё равно конечные. И в них влезает вдвое меньше
64-битных указателей, чем 32-битных. И, например, при связных списках,
повышается вероятность, что указатель next и данные окажутся в разных
кэш-линиях. Это уже здорово просаживает производительность. Реально просаживает.
Hе зря BEA Systems для своего JRocket'а (JVM такая, одна из трёх промышленных)
сделал режим "compressed pointers", когда режим 64 битный, но указатели -- 32
битные и на каждое разыменование происходит масштабирование и добавление базы
(так как минимальный размер объекта у них то ли 16 то ли 32 байта -- точно не
известно -- то можно не хранить 4-5 бит и 32 битами адресовывать 64-128Gb). Так
вот, на некоторых задачах это таки даёт прирост скорости именно за счёт
увеличения эффективнсоти кэшей и уменьшения траффика памяти при том, что КАЖДОЕ
разыменование -- это две доп. арифметические команды на регистре...
Hекоторые задачи такого прироста не дают. Проигрыша нет практически ни на каких
задачах -- или этот режим незаметен, или улучшает ситуацию. Мы придумывали
микротесты, когда этот режим всё ухудшает, но мы долго бились, что бы их
придумать и они маложизненны.
// Lev
--- GoldED+/W32 1.1.4.7
* Origin: Cave of Black Lion (2:5030/661.1)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/3284476f5dc5.html, оценка из 5, голосов 10
|