Ядро Linux оставят без поддержки легендарных процессоров Intel. Линус Торвальдс инициативу одобряет
Разработчики ядра Linux всерьез рассматривают возможность удаления кода поддержки легендарных процессоров i486, которые выпускались на протяжении чуть менее 30 лет. «Отец» Linux Линус Торвальдс предлагал сделать это еще почти 2,5 года назад, но тогда инициатива не получила одобрения со стороны сообщества разработчиков.Linux может лишиться поддержки i486
Разработчики Linux обсуждают возможность исключения из состава ядра код, обеспечивающий поддержку процессоров Intel i486, ранних вариантов i586 (P5, Pentium) и их производных. По сообщению Phoronix, с соответствующим предложением к сообществу обратился Инго Молнар (Ingo Molnar), мейнтейнер архитектуры x86 ядра Linux.
80486, или i486 – 32-битный x86-микропроцессор Intel четвертого поколения, появившийся на рынке в 1989 г. и ставший преемником модели 80386. Тактовая частота процессора в последних его версиях достигала 100 МГц, а общее количество транзисторов перевалило за 1,5 млн.
80486 стал первым процессором Intel с интегрированным математическим сопроцессором i487 (в DX-вариантах чипа). Ранее микросхемы данного типа, предназначенные для ускорения выполнения операций с числами с плавающей запятой (FPU), устанавливались в отдельный разъем материнской платы. Кроме того, в 80486 появился единый встроенный кеш команд и данных размером от 8 до 16 КБ.
Разработку 80486 возглавлял Пэт Гелсингер (Pat Gelsinger), впоследствии попробовавший свои силы в роли генерального директора корпорации Intel. Эту должность он занимал с начала 2021 г. по декабрь 2024 г.
Различные варианты процессоров на основе 80486 производились вплоть до 2007 г., в том числе и сторонними компаниями. В частности, их выпускали AMD, Cyrix, IBM. К i586 относятся процессоры Intel пятого поколения – оригинальный Pentium и Pentium MMX. Первым процессором Intel шестого поколения (i686) стал Pentium Pro, на основе ядра которого был также выполнен Pentium II.
Патчи уже готовы
Набор патчей, предложенных Молнаром, в случае одобрения инициативы исключит из состава поддерживаемых ядром Linux CPU архитектуры x86, не имеющие инструкции CX8/CMPXCHG8B и регистра TSC.
Команда CMPXCHG8B сравнивает 64-битное значение, хранящееся в регистрах общего назначения EDX:EAX (старшие и младшие 32 бита соответственно), со значением в памяти. В случае их равенства содержимое регистров ECX:EBX заменяет значение в памяти, иначе значение из памяти помещается в EDX:EAX. Инструкция модифицирует флаг нуля ZF.
TSC (Time Stamp Counter) – 64-разрядный регистр, в котором сохраняется количество тактов процессора с момента его последнего сброса. Для получения содержимого TSC используется ассемблерная инструкция RDTSC, при ее вызове значение TSC помещается в регистры EDX:EAX.
CX8 и TSC впервые появились в процессорах Intel Pentium.
Торвальдс одобряет
По мнению Молнара, избавление Linux от кода давно морально устаревших i486 позволит снизить нагрузку на разработчиков ядра. Кроме того, в объем кода ядра сократится на более чем 14 тыс. строк.
В 2025 г. размер кодовой базы ядра Linux превысил 40 млн строк кода. Около 4,5 млн из них использованы для реализации поддержки различных аппаратных архитектур, в том числе x86, ARM и RISC-V.
Как отмечает Молнар, в настоящее время разработчикам приходится поддерживать работу прослоек, обеспечивающих совместимость с древними 32-битными процессорами (x86_32), в том числе библиотеки math-emu, которая эмулирует математический сопроцессор i487 (FPU). По его словам, значительная часть удаляемого кода как раз приходится на math-emu, но даже и без ее учета ядро Linux «похудеет» на 1081 строку, если решение отказаться от поддержки i486 будет положительно воспринято другими разработчиками.
Ранее лично Линус Торвальдс (Linus Torvalds), возглавляющий разработку ядра Linux, высказался в пользу того, чтобы распрощаться с i486. По его мнению, «нет ни одной реальной причины, по которой кому-либо из разработчиков следовало бы уделить хотя бы одну секунду времени на решение такого рода проблем», подразумевая поддержание совместимости с устаревшими процессорами семейства 80486.
Время пришло?
В октябре 2022 г. отец Linux уже предлагал удалить из ядра поддержку i486, однако соответствующее решение так и не было принято. Вероятно, в этот раз шансы на успех у инициативы можно считать более высокими.
Разработчики Linux, как правило, не стремятся как можно быстрее избавиться от кода ядра, отвечающего за совместимость с мало кому нужным «железом». Поддержки i386 ядро Linux лишилось в 2012 г. – по инициативе Торвальдса.
В 2023 г. из Linux 6.7 был полностью удален код, обеспечивающий его работу на компьютерах с процессорами Intel Itanium на базе архитектуры IA-64. При этом Торвальдс называл технологию «мертвой» еще за два года до этого решения.
В начале 2021 г. разработчики решили исключить из ядра Linux поддержку более 20 старых процессоров с различными архитектурами. Большая часть из них – на ARM, но встречаются также и MIPS-чипы.