i386, i486, i586, i686, i786... Значит ли это, что i386 программy не используют все возможности, той же i786 платформы?

Компьютеры программы Linux железо unix

Заранее прошу прощения за "многа букафф" - я пытаюсь точнее описать свой вопрос. Если он уже где-то отвечен - пожалуйста не бейте, а дайте ссылку.

Насколько я понимаю, что i386 - первый 32х битный интеловский процессор (80386), выпущенный в 1985; а i786 (соответственно 80786, NetBurst архитектура микропроцессоров, Pentium 4 и иже с ним) поддерживает ММХ, SSE2 и SSE3 инструкции, которые не поддерживаются i386. Я также понимаю, что программы, написанные под i386 запустятся на всех х86 (i486, i586, и т.д.) и на AMD64, а программы написанные для, скажем, i586 запустятся на i586 и старше (i686 и выше), но не станут работать на i486 и i386. Также моё понимание таково, что поколения микропроцессоров между i386 и AMD64 имеют какие-то инструкции (те же ММХ, SSE2, SSE3), которые могут быть использованы программой, написанной для, скажем, i786. Некоторые программисты поддерживают совместимость с несколькими поколениями микропроцессоров, например Clonezilla предлагается и для i386, и для i486, и для i686, и для AMD64. А другие программисты предлагают программы совместимые только с i386 и AMD64, например Debian (мне не интересны MIPS, PowerPC, Sparc и прочие; интересует только х86 - amd64 линия).

Собственно вопрос: когда создатели программ предлагают их только в i386 и AMD64 "формате", а я вынужден использовать i386 (на Pentium 4, например), значит ли это, что множество инструкций остается незадействованными и, скажем, если я поставлю Debian i386, то я не смогу использовать MMX, SSE2, SSE3 при обработке аудио/видео на моей системе?


Ссылки по теме:
http://myonlineusb.wordpress.com/2011/06/08/what-is-the-difference-between-i386-i486-i586-i686-i786/
http://clonezilla.org/downloads/download.php?branch=alternative
http://clonezilla.org/downloads/download.php?branch=stable
http://cdimage.debian.org/debian-cd/7.3.0/

Примечание:
>> Кэп.О.: из ядра Linux в версиях 3.х полностью удалена поддержка i80386...

Не совсем так. Это произойдет в будущем, в ядре 3.8 и не раньше. Версия Linux kernel на сегодня - 3.12.6. С другой стороны я скучать за поддержкой i80386 не буду... Также спасибо за указание, что i386 может обозначать любой 32-х битный процессор, совместимый с i80386 - я читал об этом, но не считаю это хорошим оправданием программистам предлагающим "i386 совместимые" программы. Если мы говорим о любом 32-битном процессоре, то не лучше было бы говорить х86, а не i386? Иначе "i386 совместимые" программы создают ложное впечатление, что они будут работать на, скажем, Athlon K6, но в то же время требует SSE3 и либо вообще не работают на этом процессоре, либо работают ооочень мееедленно. Я понимаю, что вопрос не к вам, но тем не менее... И еще, хотелось бы увидеть что-то более материальное, нежели "кажется", ссылочку, например... (: Тем не менее - спасибо!


>> ax64: если ос использует максимум SSE2, она не сможет работать на процессорах без этих инструкций но вот программам ничего не мешает юзать SSE3,4,5,...

Вот в том-то и вопрос! Если тот же Debian не использует SSE4.1, SSE4, SSE3, SSE2, MMX, чтобы быть совместимым с i386, значит ли это, что сама ОС будет работать не настолько эффективно как если бы она поддерживала хотя бы некоторые из этих инструкций?

Ссылки:
http://www.zdnet.com/good-bye-386-linux-to-drop-support-for-i386-chips-with-next-major-release-7000008772/
https://lkml.org/lkml/2013/12/20/302

Примечание:
>> ResidentR6: Pentium 4 не поддерживает всех инструкций i386. Погугли что такое RISC-архитектура, и соответственно эмуляция неподдерживаемых инструкций.

Спасибо, узнал что-то новое. Например то, что Pentium 4 не есть RISC процессор, так как является гибридным. И вообще - ни один Интеловский процессор из х86 линии не является RISC процессором, в отличии от AMD Am29000 (прародителя К5) - см. ссылки ниже. Тем не менее, термин «сокращённый» (Reduced) в названии RISC описывает тот факт, что сокращён объём (и время) работы, выполняемый каждой отдельной инструкцией, а не количество инструкций в системе команд. В действительности, инструкций у многих RISC-процессоров больше, чем у CISC-процессоров... Но я не нашел ничего о эмуляции неподдерживаемых инструкций - ссылочка была бы очень кстати.

С другой стороны, исследователи еще в середине 1970х заметили, что есть много инструкций, которые не используются. Если дизайнеры х86 микропроцессоров вычислили, что какая-то инструкция используется в одной программе из тысячи, а при работе этой программы такая инструкция проскакивает одна на миллион стандартных (хотя это число может быть другим), то почему бы не исключить ее из набора и тем самым упростить дизайн и увеличить надежность микропроцессора (меньше деталей = выше надежность)? "А если вдруг такая инструкция и понадобится - мы ее эмулируем" - отличное решение по-моему.

Это похоже на то как если бы кто-то мне сказал, что "современные ОС не поддерживают дискеты, и это плохо!", на что можно ответить: "то, что нет дисководов и приводов в современных компьютерах не значит, что невозможно использовать образы дискет; да и к тому же на одну 2ГБ флешку может поместиться 1000 образов дискет, а с помощью syslinux можно даже загрузиться с любой из них". Так что я не уверен, что тот факт, что Pentium 4 'прирожденно' не поддерживает все х86 инструкции (хотя он их отлично эмулирует), является чем-то плохим.

Но мы отвлеклись от темы. Мой вопрос всё ещё открыт: если программа или операционная система не использует SSE инструкции (SSE,SSE2,3,4,4.1,5) чтобы быть совместимым с i386, значит ли это, что сама ОС будет работать не настолько эффективно как если бы она поддерживала хотя бы некоторые из этих инструкций?

Ссылки:
http://ru.wikipedia.org/wiki/CISC - о том, что все процессоры х86 линии - CISC, кроме Intel Pentium 4, Pentium D, Core, AMD Athlon, Phenom, которые являются гибридными.

http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%BE%D0%B2_AMD#.D0.9F.D1.80.D0.BE.D1.86.D0.B5.D1.81.D1.81.D0.BE.D1.80.D1.8B_.D1.81.D0.B5.D1.80.D0.B8.D0.B8_Am29000_.28Am29K.29
Ответы:
i386, i486, i586, i686, i786, etc. это архитектуры процессора. Вывод сам собой напрашивается.
Это значит. что на 386 он тоже будет работать. Остальное - вопрос установленных пакетов на поддерживающую её архитектуру.
i386 лишь общее название архитектуры. существует понятие «минимальные системные требования»
Не удивляйся, но Pentium 4 не поддерживает всех инструкций i386. Погугли что такое RISC-архитектура, и соответственно эмуляция неподдерживаемых инструкций.
Прикол в том, что обозначение i386 может иметь 2 значения:
1) Конкретно процессор i80386 (aka трешка)
2) любой 32-х битный процессор, совместимый с i80386, Иногда то же самое пишут как x86, что в общем случае не верно, т.к у i8086, i80186 и i80286 нет защищенной модели памяти, в том виде котором она используется в современных ОС
На сколько я помню в дебиане i386 пакеты программ которые оптимизированы с mmx можно было отдельно поставить. Посмотрите, например, ogle-mmx(This is the version optimized for MMX CPU extensions, as found on all current i386 compatible CPUs.) и когда то был libjpeg-mmx


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.