ZarathustrA писал(а):
Я понимаю это и я согласен с этим. Я называю историческим хламом в том числе и то что вы описываете. На тот период когда все это появлялось, это выглядело вполне разумно, но со временем стало понятно, что куча идей реализованных Интелом в долгосрочной перспективе являлось бредом, но бережно сохраняется до сих как этакая жертва богам обратной совместимости.
Если насчёт аппаратной многозадачности и некоторых тому подобных вещей ещё можно подискутировать, то бредовость системы команд была очевидна уже на момент появления 8086: слишком уж кривой и убогой она была по сравнению и с 16-разрядными современниками (Z8000 и 68000), и с более ранними мини-ЭВМ, особенно с PDP-11. Так что это лично я простить ну никак не могу, как не могу простить и сохранение бинарной совместимости кода между 16- и 32-разрядными режимами. Впрочем, это лирика
Цитата:
Но когда я смотрю на количество транзисторов в каждом следующем поколении процессоров, у меня возникают сомнения по поводу того насколько сильно разница в сложности набора команд влияет на сложность процессора. У меня складывается ощущение что большая часть сложности приходится на такие фишки как суперскалярность, out-of-order execution, параллельного выполнение одного потока инструкций на нескольких конвейерах, предсказание ветвлений и т.д. и т.п., то есть на вещи, которые напрямую не связаны с набором команд, но напрямую влияют на производительность.
Вы, вероятно, выпускаете из виду вещи, прямо к процессору не относящиеся, но отжирающие уйму транзисторов. Это как минимум кэши всех уровней, кроме первого -- а это гигантское количество этих самых транзисторов. У более новых процессоров туда надо добавить контроллер памяти, разные контроллеры шин, а напоследок -- и графический процессор. Так что на долю собственно ЦП остаётся не так много транзисторов. И если исполнительные блоки (АЛУ) у всех устроены действительно одинаково, то выборка-декодирование напрямую зависит от системы команд, а часть других вещей, в т.ч. суперскалярность и внеочередное выполнение -- частично зависят. В первую очередь зависимости последнего рода связаны с тем, что изрядная часть команд ИА-32 выполняется целыми микропрограммами, и надо эффективно отслеживать взаимосвязи отдельных микрокоманд, относящихся к разным командам -- ведь именно микрокоманды в конечном итоге выполняются параллельно. У АРМа же всё много проще, поскольку почти каждая команда может быть исполнена непосредственно, без необходимости разбиения на последовательность микрокоманд.
Цитата:
Это с одной стороны. С другой стороны, многие команды вводятся для ускорения решения определенного класса задач. Для примера копирование памяти инструкцией movs ~ в 2.5 разы быстрее чем последовательностью mov-ов через регистры. Поэтому стремление к минимальному и максимально простому набору команд не всегда хорошо в плане производительности.
Действительно, алгоритмическая производительность того же VAXа была много выше, чем у любого RISCа, даже если формально РИСК успевал выполнить 3-4 команды за то время, пока ВАХ выполнял одну (а с учётом всё большего значения кэша, в котором риск-команды сожрут куда больше места, чем более мощные цисковые, разница на большинстве задач будет ещё больше в пользу циска). Однако ИА-32 -- очень плохой ЦИСК, который поддаётся "разгону" за счёт всяких там внеочередных выполнений с б
ольшими затратами усилий, чем хороший ЦИСК, и сам по себе менее эффективен в алгоритмическом плане. Если взять ту же MOVS, то на ИА-32 необходимо использовать строго определённые регистры, а на ВАХе аналогичные команды могли пользоваться любыми; соответственно, для пересылки массивов информации на ИА-32 могут потребоваться (и обычно требуются) дополнительные операции сохранения и восстановления регистров. Кроме того, "неортогональность" системы команд сильно затрудняет её декодирование, и ИА-32 в этом плане близок к антирекордсменам (правда, и системы команд Thumb/Thumb-2 у АРМов тоже хреновенькие в этом отношении -- в отличие от "настоящей" АРМовской, -- однако они всё равно много лучше, чем ИА-32).
Цитата:
SII писал(а):
Увы, она была хламом ещё до своего появления -- в лице 8080
В этом плане 8086 -- достойный продолжатель идиотских традиций Интела делать как можно более уродскую архитектуру, но то, что можно было терпеть в 8-разрядном процессоре, стало откровенным идиотизмом уже в 16-разрядном. Ну а дальше -- хуже...
Оно то может и так, но с сегодняшней точки зрения. Если я правильно понимаю, то 8080 и 8086 в свое время взяли рынок и сделали Интел тем что мы видим сейчас. Однако то что хорошо выглядело тогда, выглядит уже совсем нехорошо сейчас, но до сих пор тащится для обратной совместимости.
Вот тут Вы ошибаетесь. Интеловские процессоры в плане системы команд выглядели ужасно уже на момент своего создания, ведь ещё до них существовали намного лучшие решения сразу нескольких фирм. Кроме того, одновременно с Интелом создавали процессоры и другие фирмы, причём их процессоры были куда лучше и по системе команд (что при примерно одинаковых тактовых частотах -- 4-8 МГц -- давало однозначное превосходство в производительности конкурентам Интела), и по системной архитектуре (например, у того же 16-разрядного Z8000 с самого начала предусматривалось MMU -- правда, в виде внешней микросхемы, ибо тогдашние технологии не позволяли всё впихнуть в один корпус; но зато какие возможности были уже тогда -- причём не обязательные, процессор и без MMU нормально работал). Именно по всем этим причинам я однозначно и категорически говорю, что системные архитекторы Интел -- это сборище идиотов, причём с самого начала существования фирмы и до наших дней. Вот те, кто воплощает эти идиотизмы в жизнь, являются, наверное, гениями -- ухитряются ведь обеспечивать очень хорошую производительность даже для настолько уродливой архитектуры... (К слову, то же внеочередное выполнение или суперскалярность существовали уже в 1970-х, а может, и раньше; во всяком случае, в старших моделях мэйнфреймов IBM они уже были -- но в тамошней архитектуре реализовать их существенно проще, чем для ИА-32, в силу стройности системы команд).
Цитата:
Я не спорю, что x86 еще до появления Pentium насобирал кучу, извиняюсь за выражение, говна. Но я не думаю, что это говно так уж радикально влияет на производительность. Это я извиняюсь, как навоз налипший на днище и колеса гоночного автомобиля после путешествия через свиноферму. На скоростные качества авто влияет не сильно, но впечатление портит изрядно, да и водителю уже не так комфортно управлять машиной.
Радикально -- нет. Но 1% здесь, 1,5% -- там, а в итоге -- задница...
Цитата:
Все, все приносится в жертву богам обратной совместимости.
И судя по всему это экономически оправдано. Потому что, где сейчас DEC со своими процессорами Alpha, и где сейчас Intel со своей x86.
ДЕК оказалась в заднице, думаю, в т.ч. из-за этой Альфы. Период расцвета этой фирмы -- конец 1960-х и все 1970-е годы, а отнюдь не конец 1980-х. Возможно, фатальной стала потеря Дэвида Катлера, перешедшего, как известно, в Мыкрософт: он был не только системным программистом, но и приложил руку к созданию самых удачных ДЕКовских архитектур (16-разрядной PDP-11 и 32-разрядной VAX-11). Ну а Альфа... Дурацкий РИСК, как по мне.
Что же до Интела, то думаю, здесь основная заслуга принадлежит ИБМ. Во-первых, они взяли именно интеловский процессор (по каким причинам, достоверно неизвестно; лично я считаю, что Интел просто дала взятку тому отделу, который должен был делать ИБМ ПЦ), а во-вторых, они не закрывали и не патентовали архитектуру ИБМ ПЦ, что позволило наладить выпуск его клонов всеми, кому не лень. Технически эпловский Макинтош на 68000 был по всем статьям много лучше, но копировать-то его было нельзя -- и Эпл оказалась в заднице, имея незначительную долю рынка. Ну а вместе с ней в пролёте оказалась и Моторола, ведь сам по себе процессор мало кому нужен.
SII писал(а):
Я знаком со спецификой работы Intel, ARM и AMD. Да вы правы база у Intel многоплановая, и полупроводниками там занимаются в том числе. Но не только. Я знаком с множеством исследовательских проектов Intel связанных именно с исследованием архитектуры процессоров, причем с прицелом на достаточно отдаленное будущее (5-15 лет). В том числе Larabee, Terascale, Carbon, Network-on-Chip (недавно на Хабре обсуждалось), Single-chip Cloud Computer один из основных исследователей проекта SChISM(Rigel) ушел на работу в Intel. Но при этом я никогда не слышал об каких-либо исследованиях нацеленных на отдаленную перспективу со стороны компании ARM.
Думаю, об Интеле много слышат в т.ч. благодаря широкому пиару этой компании, а также наглости их пиарщиков (выдавать заурядную вещь за суперпрорыв у них в порядке вещей; меня лично всех больше насмешили их речи по поводу появления первых двухъядерных процессоров -- хотя технически ну ничего нового в этом не было, просто за счёт улучшения микроэлектроники на один кристалл впихнули два процессора, а не один... ну, сами понимаете). Кроме того, многие ли проекты Интел доходят до реальной жизни? Я особо за этим не слежу, но что Ларабее -- полный бред, -- мне было ясно с самого начала. Как на абсолютно идиотскую идею могут выделить хоть какие-то средства при сколько-нибудь разумной политике компании -- до меня не доходит.
Цитата:
А появление такого продукты как Medfield делает противостояние с ARM еще более интересным и не предсказуемым. Потому что Intel УЖЕ вторглась на рынок традиционно эксплуатируемый ARM, а вот обратное вторжение ARM в сферу высокопроизводительного компьютинга пока остается в поле теоретических инсинуаций.
Думаю, провалится с треском на "традиционно эксплуатируемом АРМом" рынке. В недобуках вполне себе может применяться и будет применяться, но это -- те же ноуты, только уменьшенные по габаритам, т.е. входящие всё же в традиционный ПКшный сегмент, а отнюдь не сугубо мобильный. В плане энергопотребления у Интел вообще всё плохо; какое-то временное преимущество им может дать переход на трёхмерные транзисторы и ускоренное освоение тонких техпроцессов, но всякие там другие фирмы, выпускающие АРМы, тоже не сильно в этом плане отстанут, а при одинаковой технологии АРМ всегда будет дешевле и экономичней, чем ИА-32, в силу своей простоты. Что же касается производительности, то она на собственно мобильном рынке далеко не так важна: не занимаются на смартфонах созданием трёхмерных моделей, не рендерят их, не гоняют всякие САПРы и математические пакеты... Ну а декодирование видео куда лучше делают специализированные аппаратные блоки.
Что до высокопроизводительных вычислений, то там правят бал графические ускорители, а отнюдь не ИА-32 -- последняя выполняет чисто служебную роль, а соответственно, в заслугу Интелу сие никак поставить нельзя.
SII писал(а):
Ну если уж вспомнили про IBM, то это тот еще монстр, который может еще выстрелить. И по технологиям IBM впереди планеты всей (лидер по патентам регистрируемым в год). Да и на процессорном рынке она давно и достаточно активно, причем выстреливает регулярно
Вспомнить хотя бы нашумевший процессор Cell. Но заметьте, тот же IBM имеет в своем резерве как CISC так и RISC процессоры. При этом она достаточно четко разделяет их по сферам использования. И если на встроенные системы для которых важным фактором является энергоэффективность и способность обеспечить вычисления реального времени идут POWER-based процессоры c RISC-архитектурой, то упомянутый вами z196 является CISC-процессором используемым исключительно в мэйнфрэймах и исключительно в связке с эпичной системой водяного охлаждения. И для этого сегмента рынка цена за процессор в несколько десятков тысяч долларов оправдана, что позволяет IBM штамповать сотню процессоров, выбирать из них самый устойчивый и привязывать к нему водянку. Причем я сталкивался в одной из статей с описанием программирования под Айбиэмовские мэйнфреймы и у меня сложилось впечатление, что по извращенности архитектура IBM конкурентов не имеет. По сравнению с ней x86 очень даже миленько выглядит. Хотя с другой стороны очень удачно выглядят RISC-процессоры для приставок - Cell, Xenon и Broadway.
Насколько помню, ПоверПЦ -- очень жирный ЦИСК, навороты которого объясняются тогдашним стремлением вытеснить Интел с рынка ПК, заменив новым процессором, который может эффективно
эмулировать ИА-32, а такая эмуляция невозможна без крутой аппаратной поддержки. (Собственно, и название ПоверПЦ идёт именно из-за планов подмять рынок ПК под себя). Но утверждать не буду: надо вникать, а мне банально лень, да и не очень интересно.
А мэйнфреймы -- да, самые натуральные ЦИСКи и, вероятно, самая древняя из существующих архитектур (анонс-то -- 1964 год, серийный выпуск -- с 1965-го, а совместимость прикладного кода сохраняется до сих пор). Что же касается "извращённости архитектуры", то тут ошибаетесь: она намного стройней и разумней ИА-32 даже сейчас, после многократных расширений, и несмотря на постоянные жертвы тому самому богу совместимости
Просто многие вещи там откровенно непривычны тем, что всю жизнь имел дело с более традиционными на сегодняшний день архитектурами -- тем же ИА-32. Хотя, конечно, она стала много сложней, чем была в Системах 360 и 370, и мне сходу затруднительно оказалось некоторые вещи понять -- пришлось напрячь извилины.