Новая версии ядра Linux — Kernel 3.7 — не содержит большого количества нововведений, скорее являя собой результат доработки предыдущей версии, но значимость их представляется довольно значительной.
Как информирует ресурс Kernel, в новой версии ядра появилась ранее обещанная поддержка 64-разрядной архитектуры AArch64 (ARM64), реализованной в процессорах, поддерживающих набор команд ARMv8. ARM64 включает в себя новый набор команд A64, примечательный расширением числа регистров, новыми командами для вычислений с плавающей запятой и новыми векторными SIMD-инструкциями NEON, такими как инструкции для ускорения работы алгоритмов шифрования AES и SHA-1/SHA-256. Реализация ARM64 для Linux поддерживает расширенную 39-разрядную адресацию памяти для ядра и пользовательского уровня и предоставляет режим совместимости, позволяющий выполнять 32-разрядные программы, собранные для архитектуры ARMv7. В настоящее время устройства на базе ARMv8 находятся на стадии тестирования прототипов, поступление в продажу первых ARMv8-систем ожидается в следующем году.
Также здесь реализованы унификация кода поддержки архитектуры ARM и обеспечение возможности формирования многоплатформенных ARM-сборок. Если ранее требовалось собирать отдельный вариант ядра для каждого типа SoC, то начиная с выпуска 3.7 появится возможность собрать одно ядро, которое будет содержать поддержку различных ARM-платформ. Унифицированная сборка ядра 3.7 сможет работать на платформах Calxeda Highbank (серверы HP Moonshot), Versatile Express (эталонная плата, поддерживается эмулятором QEMU), Marvell ARMADA (от мини-серверов до телеприставок), Altera SoC FPGA и Picohip picoXcell (мини-станции для офисов). В будущих выпусках ядра число поддерживаемых платформ будет расширено. Указанное нововведение существенно упростит жизнь разработчикам дистрибутивов для ARM-систем, которым теперь не придется формировать отдельный загрузочный образ для каждой ARM-платформы.
Поддержка 64-разрядной ARM-архитектуры в ядре Linux 3.7 не стала таким уж сюрпризом, о ней стало известно еще в начале октября со слов одного из разработчиков ядра Олофа Йоханссона: “Первая мультиплатформенная ARM-поддержка появится в Linux 3.7. С точки зрения логики организации кодов ядра, это значительное новшество. Linux 3.7 — это первое ядро (Linux), которое поддерживает все текущие SoC-системы на базе ARM-чипов. При помощи 3.7 становится возможным создать одно ядро, которое будет поддерживать highbank, vexpress, mvebu, socfpga, picoxcell и другие”, — сказал он тогда.
О востребованности поддержки и унификации кода SoC-платформы на базе ARM для Linux говорит то, что мобильные процессоры ARM в настоящее время применяются, пожалуй, повсюду. На Западе выпуском решений занимаются практически все основные производители. Даже Microsoft, исторически не воспринимавшая альтернативу чипам x86, недавно выпустила ARM-планшет Surface и программное обеспечение для него.
“Произрастая” из мобильной сферы, микропроцессоры ARM обзаводятся и серверными амбициями. Компании Cavium, Calxeda и другие уже сейчас выпускают серверные продукты на базе ARM, которые потребляют значительно меньше электроэнергии, нежели x86-серверы. В серверном мире потребление — это деньги, и зачастую отнюдь немалые.
Кстати, еще один бастион, который сдерживает распространение ARM для серверов — они не совместимы с серверным ПО, написанным под x86-архитектуру.
Российская компания “Эльбрус Технологии”, разработчик микропроцессоров, готовится решить эту проблему. Компания ведет разработку эффективного эмулятора для запуска x86-приложений на ARM-оборудовании. Данная разработка сейчас находится в стадии альфа-версии. Компания намерена к 2013 г. выпустить рабочую публичную бета-версию продукта, а к 2014 г. достичь эффективности как минимум в 80% и выпустить продукт на рынок.
На сегодня немногие компании работают на ARM-серверах, следовательно и рынок для x86-эмулятора невелик, но некоторые предприятия очень заинтересованы в экономии средств за счет перехода на ARM-серверы и именно им разработка “Эльбрус Технологии” может быть полезна, тем более, что компания, создающая x86-эмулятор для ARM, имеет опыт работы по бинарной трансляции кода, а новая ARM-среда создается вручную, чтобы максимально учесть особенности новых систем.
Среди других новшеств Linux 3.7 — в ядре были доработаны порты и для других процессорных архитектур — MIPS и SPARC. Из драйверов разработчики улучшили поддержку SCSI и сетевой подсистемы. В новую версию принято 10 409 исправлений от более чем 1200 разработчиков, размер патча — 95 Мб (изменения затронули 15 886 файлов, добавлено 1 570 793 строк кода, удалено 1 246 965 строк). В связи с изменением структуры размещения и переработкой иерархии директорий некоторых частей ядра, размер нынешнего патча более чем в два раза больше по сравнению с прошлыми выпусками. Около 33% всех представленных в версии 3.7 изменений связаны с драйверами устройств, примерно 23% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 6% связано с сетевым стеком, 3% — файловыми системами и 3% c внутренними подсистемами ядра.