Forums » Мультиклеточная архитектура »
Выравнивание.
Added by VaalKIA over 9 years ago
Предварительная реализация выравнивания массивов на 8
А зачем нужно выравнивание на 8?
Насколько я понимаю, внутренняя память процессора статическая, то есть имеет одинаковую задержку в любой момент времени. Выравнивание делается для эффективной работы опережающего чтения в кешах и для интерфейса памяти имеющего большую разрядность шины (16bit .. 512bit), то есть, работающую для процессора пакетами. Но в любом случае, на байт невозможно выравнивать, поскольку это минимальная стандартная компонента, ниже которой процессоры не используют.
И раз затронута эта тема, хотелось бы знать, насколько процессор критичен к выравниваю данных, ведь, насколько я понял, все опкоды грузятся во внуренную память клетки при загрузке параграфов, а современная внешняя память, учитывая частоту процессора, даже в пакетном режиме (предосталяя один байт из пакета), будет делать это быстрей, чем нужно процессору.
Replies (3)
RE: Выравнивание. - Added by krufter_multiclet over 9 years ago
Наверно, это вопрос по модификациям компилятора.
Выравнивание на 8 байт начала массива в памяти данных даст возможность в дальнейшем преобразовать массив типа char к short например, так чтобы чтение short было выравнено на 2 байта и т.п. С внешней памятью проблем нет, т.к. она тактируется частотой на которой работает процессор. У нас есть внешний текущий клок.
RE: Выравнивание. - Added by VaalKIA over 9 years ago
Не понял про преобразование. Если char занимает один байт, то это бессмысленно, если это wchar, то и short - тоже 2. К тому же выравнивание должно быть только границы начала массива, а не данных примитивных типов внутри. Я вообще сомневаюсь в целесообразности делать массив с дырками, что бы ускорять производитльность строковых данных. И как я понял из ответа, на скорость доступа к данным выравнивание в вашем процессоре не влияет при правильной внешней памяти?
RE: Выравнивание. - Added by krufter_multiclet over 9 years ago
VaalKIA wrote:
Не понял про преобразование. Если char занимает один байт, то это бессмысленно, если это wchar, то и short - тоже 2. К тому же выравнивание должно быть только границы начала массива, а не данных примитивных типов внутри. Я вообще сомневаюсь в целесообразности делать массив с дырками, что бы ускорять производитльность строковых данных. И как я понял из ответа, на скорость доступа к данным выравнивание в вашем процессоре не влияет при правильной внешней памяти?
Я так и написал про границу начала массива, внутри ничего не выравнивается. На скорость доступа к данным выравнивание не влияет.