OSDev

для всех
Текущее время: 21 май 2018, 10:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Выравнивание и кэш
СообщениеДобавлено: 04 апр 2015, 13:54 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Зачем выравнивают поля структур, в целом понятно. Вопрос лишь в том, насколько выгодно выравнивание на большие значения (8 байт в Delphi), если не предполагается использование SIMD. Ведь в этом случае размер структур и классов также вырастает, и их меньше поместится в кэш. Нет ли тут противоречия?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 04 апр 2015, 14:56 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1088
Не вижу смысла в выравнивание. Разве что в компиляторе можно оптимизатор сделать проще. Обрабатывать все по 4 байта. И то это сомнительно.
Да в кэше будет меньше. Но я думаю на это никто не смотрит. Мы бы до сих пор писали бы на ассемблере и оптимизировали всё до байта как во времена спектрума. Сейчас вычислительных мощностей много. И для простой операции сложить элементы в массиве городим до 10 классов. Конечно оптимизаций занимаются, но редко. А если нужно то структуру модно упаковать. Или массив использовать.

Думаю в дельфи выравнивание связано со стеком. Что-бы структуры можно было проще и быстрее через стек перетаскивать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 04 апр 2015, 17:10 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
В чём вопрос то: "нужно ли выравнивание вообще?", или "чем 8 байт лучше 4х?", или что?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 04 апр 2015, 17:58 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
dragon писал(а):
"чем 8 байт лучше 4х?", или что?

Да, чем 8 лучше 4, если нет SIMD?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 04 апр 2015, 18:27 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
64 бит может быть? или особенность реализации user-level менеджера кучи. или особенность работы с современной памятью. Если ничего из этого, то на первый взгляд ничем не лучше.
Выравнивание чего, кстати? полей в структурах или выделяемых в куче блоков?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 04 апр 2015, 19:46 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
dragon писал(а):
64 бит может быть? или особенность реализации user-level менеджера кучи. или особенность работы с современной памятью.

Да вот, мне бы хотелось услышать аргументированное объяснение. Выравнивание на 8 байт вроде в Delphi 6 появилось, до этого максимум было на 4. При этом библиотечные функции нигде SIMD не используют, и в кодогенераторе никаких MMX и SSE нет. Речь про выравнивание, задаваемой директивой {$A8} или в настройках проекта.

В сишных компиляторах как? У них вроде и оптимизация получше, и векторизация есть, поэтому выравнивание имеет практический смысл.

Для меня вопрос пока теоретический, но когда доберусь до собственной кодогенерации, станет практическим. Пока же просто не идет из головы, не могу понять логику Borland.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 04 апр 2015, 20:30 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1088
Думаю логика проста когда-то скопировали из другого проекта так и осталось. А кто зачем как в том анекдоте про странный рецепт мяса в горшочке.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 05 апр 2015, 01:01 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
pavia писал(а):
Думаю логика проста когда-то скопировали из другого проекта так и осталось.

Из какого еще проекта? 1 апреля уже прошло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 09 апр 2015, 16:50 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Ну вот, в кои веки решил что-то спросить, а ответа не получил. Сишные компиляторы на сколько выравнивают?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выравнивание и кэш
СообщениеДобавлено: 09 апр 2015, 21:39 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
линейка кэш ,например 32 байта, структура ,например 28 байт, если не выровнено на 32 - вся структура не попадает в линию. Структура - данные или код.
На сколько выравнивают - руками смотреть надо. В хередакторе .


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB