|
|
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
всем привет, всех с новым годом. Не смог забыться в алкогольном угаре, теперь всякие мысли терзают по программированию. Есть переменная типа int. Располагается, например, так: 1021 - первый байт. 2022 - второй байт. 2023 - третий байт. 2024 - четвертый байт. Зачем нужно выравнивать, чтобы адрес начинался с кратного? Процессор за один так все 4 байта читает? В чем тогда проблема, что данные лежат начиная с не кратного адреса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2013, 15:18 |
|
||
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
просто_дураквсем привет, всех с новым годом. Не смог забыться в алкогольном угаре, теперь всякие мысли терзают по программированию. Есть переменная типа int. Располагается, например, так: 1021 - первый байт. 2022 - второй байт. 2023 - третий байт. 2024 - четвертый байт. Зачем нужно выравнивать, чтобы адрес начинался с кратного? Процессор за один так все 4 байта читает? В чем тогда проблема, что данные лежат начиная с не кратного адреса? давно читал... Не помню уже чем это вызвано, но насколько я помню выравнивание всего-лишь ускоряет работу. То есть процу обращения к кратным адресам даются быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2013, 15:28 |
|
||
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
просто_дуракВ чем тогда проблема, что данные лежат начиная с не кратного адреса? производительность падает для SSE инструкций - просто требование Процессор за одно обращение читает несколько больше, чем 4 байта - смотрите cache line size ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2013, 16:52 |
|
||
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
просто_дуракЗачем нужно выравнивать, чтобы адрес начинался с кратного?Чтобы было одно физическое чтение, а не два (x86). Чтобы не было аппаратных исключений (PPC и, вероятно, другие процессоры). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2013, 20:08 |
|
||
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
К слову, емнип, на X86 тоже можно включить ИС на невыровненное обращение. Только это никто не делает по прозаическим причинам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 10:51 |
|
||
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
Да, дело в процессорах - нашел перевод статьи интересной про гранулярность: http://konishchevdmitry.blogspot.ru/2010/01/blog-post.html Получается, некоторые процессоры поддерживают гранулярность, некоторые - нет, т.е. понятия "выровнены\не выровнены данные" не существует - всегда за раз все считывает. Не могу в толк взять, зачем тогда придумали эту гранулярность, она же замедляет работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 21:17 |
|
||
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
просто_дурак, статья - говно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 22:57 |
|
||
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
просто_дурак, что такое в твоём представлении "гранулярность"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2013, 12:45 |
|
||
|
Выравнивание - что это такое?
|
|||
|---|---|---|---|
|
#18+
просто_дуракДа, дело в процессорах - нашел перевод статьи интересной про гранулярность: http://konishchevdmitry.blogspot.ru/2010/01/blog-post.html Получается, некоторые процессоры поддерживают гранулярность, некоторые - нет, т.е. понятия "выровнены\не выровнены данные" не существует - всегда за раз все считывает. Не могу в толк взять, зачем тогда придумали эту гранулярность, она же замедляет работу. Там же вроде всё просто написано. Что бы легче было понять, перейдём к побитному чтению и представим, что нам надо считать два байта, но не с целым адресом, а смещённый на 3 бита вправо (то есть с третьего по 7-ой бит первого байта второй байт и с 0-го по 2-ой бит третьего байта). Как мы будем их читать? правильно... для первого байта - читаем первый байт, смещаем, читаем второй байт, смещаем, сливаем... для второго байта - читаем второй байт, смещаем, читаем третий байт, смещаем, сливаем... Вообщем дофига действий, когда можно было бы обойтись двумя чтениями. НО... теперь представим, что мы можем читать не байт за один раз, а сразу 2 байта... тогда нужно всего лишь одно чтение. То есть имеем прирост скорости вдвое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2013, 13:11 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38102984&tid=1341968]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
195ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 518ms |

| 0 / 0 |
