Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Большинство софта работает под Windows.Сие есть или уже неправда или «почти неправда». «Большинство софта» сегодня работают под Android и чуть меньше под iOS — ну или это случится через пару лет.
H. Other Use Restrictions. The grants set forth in this License do not permit you to, and you agree not to, install, use or run the Apple Software on any non-Apple-branded computer, or to enable others to do so.
arch-arm
arch-arm64
arch-mips
arch-mips64
arch-x86
arch-x86_64
производители телефонов будут поддерживать arch-arm и где-то arch-x86, просто чтобы не подставлять своих клиентов не работающими игорями на C++Вы же не думаете, что в одном устройстве одновременно и arm и x86?
Но пытался рассуждать про другое, а именно будут ли производители телефонов на базе Android переходить на 64-битные версии arm и x86.А куда деваться? Ещё лет несколько можно пожить без 64 битов можно, но рано или поздно переходить придётся. Это не так страшно как кажется если не уподобляться придуркам, которые устроили всем «кузькину мать» в Linux'овых дистрибутивах — но это чисто некомпетентность дистрибутиводелов, ничего особо страшного тут нет. Сравните ужасы переходов в Linux и в Windows — и вы всё поймёте…
А можно поподробнее, что за проблемы с переходом 32 → 64 в GNU/Linux?Изначально, когда x86-64 только появился куча дистрибутивов решила, что все разработчки просто ждут-недождутся возможности попортировать свой код на x86-64 и слелали чисто x86-64 дистрибутивы. Когда пользователи такого «чисто 64-битного дистрибутива» спрашивали «а как же Flash?» им отвечали «это — не наши проблемы, когда Adobe сделает — тогда и будет». Adobe, разумеется, неизменно отвечал что их 32-битная версия отлично работает, а если работчики дистрибутивов поломали совместимость, то пусть они её и чинят. Через какое-то время появился костыль и жизнь стала полегче, а ещё через какое-то время появился и 64-битный Flash.
Таким образом, сегодня мы строим одноразовые системы, не учитывающие того, что ждет нас в будущем
ну это — кроме как по недосмотру — вообще детская ошибка
Вы не поверите, в одной крупной компании, свой кастомный графический движок так все игровые ресурсы читает.Ну это не отменяет элементарности этой ошибки :) Скорее всего движок был написан очень давними программистами, а те, кто работают сегодня, знают что для починки багов потребуется решить много проблем, в частности возможно сломается совместимость с форматами — поэтому они или их руководство не решаются туда лезть. Я думаю, рано или поздно им придется заняться этой проблемой. В частности потому, что графический движок — как раз таки софт, особенно заинтересованный в работе с размерами более 32-битных (я молча полагаю, их движок 32-битный, поскольку 64-битные ОС начали набирать свою популярность относительно недавно).
О какой поддержке речь — мы же не на ассемблере кодим, взял, скомпилировал с GCC, и вот приложение уже работает на другой архитектуре.Ну да. Работает. Пока не упадёт, да. Вам вообще такие слова как «memory ordering» знакомы? А табличку в Wikipedia видели?
Единственная «выжившая»Ну дак статья и повествует про всякие маргинальные платформы, их состояние и про то, что они как бы не выживают.
Отдельная боль — это сборка gcc с нужными патчами. Нельзя просто так взять и собрать gcc! Команда, которая делает его, гарантирует только то, что можно собрать версию N+1 с помощью версии N. ВСЁ.Вы какие-то ужасы про GCC рассказываете. Он собирается вообще чем угодно (разработчики только недавно начали использовать С++ — и то очень острожно). Разуеется только C компилятор, всё остальное собирается уже с помощью него. То есть вам нужно было собрать GCC 3.3.3 для Linux с помощью хоть GCC 5.2, а уж с помощью GCC 3.3.3 собирать свой кросс-компилятор. Всё.
Причём во втором случае, как показывает практика, это будет древний gcc, просто потому что когда-то под него уже делали патч при разработке архитектуры ядра процессора, а потом переносить под свежие версии не имеет смысла.Как это не имеет смысла? Вам софт под ваш процессор нужен или нет? Если нужен — нужно переносить, если не нужен — ну это дело ваше, зачем тогда вообще процессор делать если вы на нём ничего запускать не собираетесь?
Вот конкретно с 3.3.3 такая засада.Которая конкретно в 3.3.4 уже отсутствует.
Ну хоть так. Остальные же разрабатывают железо, а потом пытаются придумать — где они возьмут софт под это железо. А сейчас, вообще говоря, нужно делать наоборот.
Я не знаю истории с Alpha, но полагаю, что именно Itanium умер просто потому, что Intel плохо вкладывались в рекламу и продажи.Нет, нет и нет. Itanium умер потому что это была попытка продвинуть новую архитектуру в нишу, которая уже была занята другими архитектурами. Тут никакая реклама не поможет: софта-то нет!
Во-первых, я ни разу не видел его в магазинах, хотя, признаться, мне было бы интересно его купить просто из любопытства, и думаю ни мне одному (разумеется при разумной цене)Это вы процессор с кристаллом в 700mm2 хотите увидеть «по разумной цене»? Чисто для справки: AMD Radeon Fury X имеет кристал размером 600mm2, у GeForce GTX Titan — 560mm2…
А все потому, что Intel не занимается его рекламой, конференциями, бенчмарками на нем, не упоминает его как бы между прочим в беседе на другие темы — такое ощущение, будто они его просто сделали, и забыли!Так и есть. Часть Itanium'ов продаётся по долгосрочным контрактам, которые предусматривают не один год поддержки. Oracle пыталась «выскочить» — не удалось, Intel же понимал, что это безнадёга, так что какое-то количество процессоров ещё будет выпущено (может даже ещё одна модель будет, я не знаю как там контракты составлены), но это уже в чистом виде «жизнь после смерти».
Itanium умер потому что это была попытка продвинуть новую архитектуру в нишу, которая уже была занята другими архитектурами. Тут никакая реклама не поможет: софта-то нет!Мне кажется, тут аргумент про софт звучит неубедительно, потому что на момент появления Itanium в нем имелась аппаратная эмуляция x86 архитектуры (да, я знаю, она была медленной, но она была), и очень быстро появились ОС под IA64, включая Windows.
да, я знаю, она была медленной, но она былаС практической точки зрения это значит, что её не было. «Проблему курицы и яйца» (которую отлично решала поддержка старых архитектур при появлении 80386 или AArch64) она не решала.
Вот взять хотя бы amd64 и aarch64 из заголовка статьи. Обе сравнительно недавние.Чего? Одной 37 лет, другой — 25 недавно стукнуло. Назвать архитектуру четвертьвековой давности «сравнительно недавней» — это вы чего-то объелись.
К тому моменту, когда они появились, — очевидно, софта под них ещё не было.Под архитектуру (если даже вдруг считать что amd64 и/или aarch64 — это таки новая архитектура) — не было. Под процессоры — было и ещё сколько! Просто-таки мегатонны софта!
Но в обоих эти случаях через несколько лет после появления платформы под неё начал выходить софт.Начал выходит «нативный» софт, вы хотели сказать. Ну дык. Проблемы курицы и яйца ведь не было, так что какие проблемы? Сначала выпустили кучу железа, потом и софт подтянулся — то же самое было и с SSE и с NEONом.
Чем AMD64 и AArch64 отличаются от всяких Alpha и Itanium, умерших во младенчестве — мне не понятно, честное слово.В момент выхода и Alpha и Itanium не имели ничего, что можно было бы на них пускать.
Почему-то W65C816S или 80386й никто не пытается представить как «новую архитектуру», а вот amd64 и aarch64, полученные по такому же принципу — да, новьё прям.
Тут как бы всё понятно: чтобы поддержать эти, с позволения сказать, «новые» архитектуры нужно было переделать одну программу (пусть даже большую и сложную) — ядро. Всё остальное — можно было делать постепенно. Как оно и произошло. Переход с Apple ][ на Apple IIGS тут ничем не отличается от перехода с AArch32 на AArch64…
Это существенно отличается от SSE/NEON, позволявшего добавлять новые инструкции в нужные места старого кода.А в чём разница? Нет, я серьёзно.
Ну и в чём тогда была проблема при переходе на Itanium или Alpha?В том, что они плохо исполняли старый код. Медленно и со скрипом. Рассматривать их как x86++ было нельзя.
Но почему-то PowerMac взлетел, а Windows-IA64 потонул.PowerMac взлетел только потому что Apple обладала монополией и не стала выпускать Mac'и с использованием 68060. Более того: даже 68040 на 40MHz использовался только в одной, весьма редкой, модели (Quadra 840AV)! Так что, с одной стороны, при переходе от несуперскалярного 68040 на 33MHz к суперскалярному PowerPC на 66MHz даже старые программы работали с приличной скоростью, а с другой — всем было однозначно объявлено: «PowerPC — это ваше будущее, жрите что дают».
Для использования SSE не нужна поддержка со стороны ОС.Да шо вы такое говорите. А кто регистры дополнительные будет сохранять? Пушкин?
Но согласитесь, что такие выкрутасы намного сложнее, чем «просто добавить в старый код новые инструкции там, где они нужны, и больше ничего не трогать».Разница в любом случае не качественная, а количественная. Для перехода в x86-64 нужно сделать
far jmp, а для переключение в режим работы с MMX — вызвать инструкцию EMMS… так ли уже велика разница? И если разница между far jmpом и EMMSом так принципиальна, то куда вы отнесёте Thumb и ARM26? Это уже новые архитектуры или ещё нет?x86 (с его всякими unreal mode) вы их сколько насчитаете?Выходит, что успех/неуспех нового процессора в не меньшей степени, чем качествами самого процессора, определяется маркетинговой политикой и рыночной конъюнктурой.Только всё наоброт. Если у вас есть новая ниша, которая, по тем или иным причинам, не может быть занята существующей архитектурой — у вас есть шанс. Если ниши нет — то уже неважно насколько хорош ваш процессор.
Да шо вы такое говорите. А кто регистры дополнительные будет сохранять? Пушкин?
Ну значит, не-SSE-шная ОС позволяет запускать SSE-приложения по одному =)Не позволяет. Операционка должна не только сохранять регистры, но и сообщить процессору, что она это делает установив в единичку бит OSFXSR в CR4. Иначе SSE-инструкции не распознаются.
ARM тоже (там вообще прикольно: архитектура, вроде как, одна, но разных видов ABI… вагон и маленькая тележка: OABI и EABI, hard float и soft float, уже упоминавшийся режим ARM26 — и это только из того, что «навскидку» вспомнилось) — что будет несколько… гхм… странно.Не считая ещё особенностей использование инструкции ветвления
B/BX Rm при младшем бите Rm выставленном в 0 или 1 ,)
Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим