Чем отличаются архитектуры ARM и x86

    ffec8970429d05e7b23e3cc206245a76.jpg

    Еще вдрызг недавно (всего 10 лет назад) на рынке пользовательских процессоров быть в наличии три архитектуры, и все они были более-менее неплохо разделены: ARM-процессоры ставились в подвижные устройства, где важно было время автономной работы, x86-процессоры устанавливались в устройства под управлением Windows, ну и в пику Intel Apple использовала в собственных устройствах процессоры на архитектуре PowerPC (хотя мы знаем, что она все же «переползла» на x86). Но на современный момент на рынке пользовательских процессоров осталось всего две архитектуры — PowerPC убыл из гонки, причем совсем недавно: последнее устройство на этой зодчестве, PlayStation 3, перестали производить всего пару недель обратно. Более того — все больше утечек о том, что на ARM-процессорах можно будет бросать полноценную Windows, и с другой стороны — тот же Android отлично работает с х86-процессорами возбуждая с версии 4.0. То есть, как мы видим, разница между этими зодчествами все больше размывается в глазах пользователей, и в этой статье мы и выясним, благодаря чего так происходит.

    Архитектура х86



    Для начала определимся с тем, что же такое архитектура. Говоря примитивным языком, с точки зрения программиста архитектура процессора — это его совместимость с некоторым набором команд, которые могут использоваться при написании программ и реализуются на аппаратном ватерпасе с помощью различных сочетаний транзисторов процессора. 

    02.jpg

    Процессоры х86 сооружены на архитектуре CISC (Complex Instruction Set Computing, процессоры с глубоким набором инструкций) — это означает, что в процессоре реализовано максимальное контингент инструкций, что, с одной стороны, упрощает написание программ и уменьшает их вес, и другной края — процессор практически невозможно нагрузить на 100%. 

    Первым процессором на зодчестве х86 был Intel 8086 — это первый 16-битный процессор от Intel, авралящий на частоте до 10 МГц и выпущенный в 1978 году. Процессор оказался очень популярным и производился до 1990 года, а все последующие процессоры стали с творить с ним совместимые. Сначала эта совместимость показывалась в виде окончания названия процессора на 86, ну а в будущем, с выходом Pentium, архитектуру решили назвать х86.

    В 1985 годку вышел процессор i386, который стал первым 32-битный процессором от Intel, а к 1989 годку Intel выпустила первый скалярный процессор i486 — этот CPU умел выполнять одну операцию за такт. В дальнейшем, с выходом Pentium в 1993 годку, процессоры от Intel стали суперскалярными, то есть научились делать порядочно операций за один такт, и суперконвейерными — то есть имели два вычислительных конвейера. Но это ыбло еще не все — по сути все процессоры Intel, начиная с i486DX, являются CISC-процессорами с RISC-ядром (Reduced Instruction Set Computer, процессоры с суженным набором инструкций): в микропроцессор встраивается аппаратный транслятор, который из первых рук перед исполнением преобразуют CISC-инструкции процессоров x86 в более простой комплект внутренних инструкций RISC, при этом одна команда x86 может вызывать несколько RISC-команд.

    С тех пор особо ничего не поменялось — да, росло число конвейеров, вырастало число операций за такт, процессоры стали многоядерными и 64-битными, но до сих пор все вывода от Intel и AMD являются суперконвейерными суперскалярными микропроцессорами, построенными на основе CISC-архитектуры с RISC-ядром.

    Зодчество ARM



    Архитектура ARM появилась позже x86, в 1986 году с выходом процессора ARM2. Мишень ее разработки была в максимальной оптимизации и уменьшения числа транзисторов — к образцу, под нагрузкой x86-процессор тогда использовал едва ли 30% от числа абсолютно всех транзисторов, все другие банально простаивали. Поэтому ARM разработали собственный чип на RISC-архитектуре, что назвали ARM2 — он имел всего 30000 транзисторов (сравните с 275 тыщами транзисторов в актуальном тогда i386), и не имел как кэша (что в общем-то между тем было нормой для процессоров — кэш можно было докупить и поставить неслиянно), но и микропрограммы как таковой — микрокод исполнялся как и любой другой автомобильный код, путём преобразования в простые инструкции:

    CISC-RISC.jpg

    В итоге из-за того, что количество транзисторов в ARM-процессорах ощутимо меньше, чем в х86, мы и получаем, что их тепловыделение также ощутимо ниже. Но, с другой стороны, из-за упрощенной архитектуры и выработка у ARM тоже ощутимо ниже, чем у x86.

    В дальнейшем к ARM так же прикрутили поддержку и суперскалярности, и суперконвеерности, процессоры начали многоядерными и несколько лет назад стали 64-битными. В итоге современные постановления от ARM являются суперконвейерными суперскалярными микропроцессорами, построенными на основе RISC-архитектуры.

    Результаты



    В результате мы видим две крайности: x86 являются мощными решениями, обвешанными практическими руководствами, которые могут выполнять абсолютно любые задачи с хорошей быстротой. Но за это приходится платить увеличенным тепловыделением. ARM же — простые процессоры, у которых комплект инструкций ощутимо меньше, поэтому выполнение многих серьезных тем на них не имеет особого смысла из-за медлительности процесса. Но при этом и выделение низкое. Однако самое основное — обе архитектуры поддерживают RISC-инструкции, а значивает что на обеих архитектурах можно запускать одинаковые ОС, что мы и видим в случае с Android, Linux и Windows, и это значит, что в будущем разница между х86 и ARM будет размываться все больше.