Салам алейкум, ЛОР!
32-бита... О сколько боли и страданий в этих словах...
Сразу хочу сказать, это тред не о «64 vs 32», а том, как глубоко уже находится гроб 32-бит и не посыпалась ли ещё на него земля.
Множество факторов говорят о кончине 32-бит. Например:
1. Переход даже мобильных процессоров на 64-битную технологию.
2. Отказ от поддержки 32-бита в коммерческих дистрибутивах. IBM отказалась (но есть обратная совместимость для юзерспейса) от 32-бита ещё в прошлом тысячелетии (в AIX, System i, zOS и других ОС, а также в гипервизорах). Solaris for SPARC была только 64-битной тоже уже в конце девяностых. Мало того, в System i вообще используется 128-битная адресация и вычисления, которые аппаратно эмулируются 64-битным процессором.
3. Ряд ПО, такого как ZFS, MySQL, PostreSQL, Oracle g10, IBM DB2, научного ПО и д.р. не может нормально работать (только с большими багами, тормозами и ограничениями) на 32-битных процессорах. Исправление 32-битных проблем невозможно или не считается важным. В ряде случаев (в основном проприетарных) ПО пишется только для 64-битных систем.
4. Ряд оборудования и технологий не умеют в 32-бита (например IOMMU).
5. Поддержка серверного и сетевого ПО для 32-бит не приоритетна, тестирование тоже из-за того, что в ынтерпрайзе и хайлоаде уже давно 64-битная эпоха.
6. Даже в мобильниках (не говоря уже о макбуках и десктопах) везде 4Гб RAM или больше. PAE, очевидно, не эффективно и создает массу проблем при разработке ядре и драйверов. А сервер с менее 4Гб памяти - это вообще уже нонсенс. Я даже десктопов то с менее чего 4Gb уже лет пять как не видел.
7. Уж простят меня за офтопик, но даже MS, которую можно считать эталонным legacy и дерьмищем в мире IT, на серверах теперь использует только 64-битный юзерспейс (хотя особым образом 32-бита можно включить).
При этом 32-бита создают множество геморроя:
1. Надо писать софт с оглядкой на возможность запуска в 32-битной среде, используя спец типы и классы, тестировать его и т.д. Т.е. 64-бита при таком подходе должны восприниматься как расширение, а не как дефолт. Если Вы пишите на сях, а не на яве, то это станет для Вас 9-ым кругом ада.
2. Этот софт надо поддерживать. Т.е. не только тестовая и LTS-ветки, а ещё по две битности для каждой ветки.
3. В случае с дистрибутивами нужно поддерживать вообще три ветки: 64-бита, 64-бита + мультилиб, 32-бита.
4. Мультилиб обычно крайне геморно собирается и используется. В генте до сих пор мультилиб - это просто набор тар-архивов. А самому сделать мультилиб - это то ещё удовольствие.
5. Безопасность. Из-за ограниченного диапазона адресов виртуальной памяти технологии рандомизации памяти не могут эффективно использоваться, что уменьшает безопасность.
6. Тормоза и нехватка памяти для ПО. Это даже libreoffice и лсе заметно, серверное ПО вообще вешается моментально.
7. Из-за того, что 32-бита в x86 - это аж i586, то ни о каких SSE*, AVX, SSSE* даже речи не идёт. Конечно, если Вы - не гентушник. Ещё один гвоздь в крышку гроба производительности.
В итоге не мне понятно, зачем может быть нужна в нашем сытом 2015-ом году 32-битность? Для оборудование, которое было сделано ещё до него рождения? Для встроенного оборудования? Но тогда зачем нужны 32-bit сборки под x86, SPARC и Itanium?
Объясните, почему нельзя оставить 32-бита только для ARM и MIPS? И забыть уже об этом, как о страшном сне. Какая от 32-бита практическая польза?
Перемещено JB из general