Project

General

Profile

Выравнивание.

Added by VaalKIA about 9 years ago

Предварительная реализация выравнивания массивов на 8

А зачем нужно выравнивание на 8?
Насколько я понимаю, внутренняя память процессора статическая, то есть имеет одинаковую задержку в любой момент времени. Выравнивание делается для эффективной работы опережающего чтения в кешах и для интерфейса памяти имеющего большую разрядность шины (16bit .. 512bit), то есть, работающую для процессора пакетами. Но в любом случае, на байт невозможно выравнивать, поскольку это минимальная стандартная компонента, ниже которой процессоры не используют.

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


Replies (3)

RE: Выравнивание. - Added by krufter_multiclet about 9 years ago

Наверно, это вопрос по модификациям компилятора.
Выравнивание на 8 байт начала массива в памяти данных даст возможность в дальнейшем преобразовать массив типа char к short например, так чтобы чтение short было выравнено на 2 байта и т.п. С внешней памятью проблем нет, т.к. она тактируется частотой на которой работает процессор. У нас есть внешний текущий клок.

RE: Выравнивание. - Added by VaalKIA about 9 years ago

Не понял про преобразование. Если char занимает один байт, то это бессмысленно, если это wchar, то и short - тоже 2. К тому же выравнивание должно быть только границы начала массива, а не данных примитивных типов внутри. Я вообще сомневаюсь в целесообразности делать массив с дырками, что бы ускорять производитльность строковых данных. И как я понял из ответа, на скорость доступа к данным выравнивание в вашем процессоре не влияет при правильной внешней памяти?

RE: Выравнивание. - Added by krufter_multiclet about 9 years ago

VaalKIA wrote:

Не понял про преобразование. Если char занимает один байт, то это бессмысленно, если это wchar, то и short - тоже 2. К тому же выравнивание должно быть только границы начала массива, а не данных примитивных типов внутри. Я вообще сомневаюсь в целесообразности делать массив с дырками, что бы ускорять производитльность строковых данных. И как я понял из ответа, на скорость доступа к данным выравнивание в вашем процессоре не влияет при правильной внешней памяти?

Я так и написал про границу начала массива, внутри ничего не выравнивается. На скорость доступа к данным выравнивание не влияет.

    (1-3/3)