Как архитектура ARM отличается от x86?
======================================

Является ли архитектура x86 специально разработанной для работы с клавиатурой, в то время как ARM ожидает, что она будет мобильной? Каковы основные различия между ними?

 

 `ARM` - это [RISC](http://en.wikipedia.org/wiki/Reduced_instruction_set_computing) (архитектура сокращенного набора команд), а `x86` - [CISC](http://en.wikipedia.org/wiki/Complex_instruction_set_computing) (Комплексная вычислительная система).

Основное различие между этими аспектами заключается в том, что инструкции ARM работают только с регистрами с несколькими инструкциями по загрузке и сохранению данных из/в память, а x86 также может работать непосредственно с памятью. До тех пор, пока v8 ARM не станет родной 32-битной архитектурой, предпочитая четыре байтовых операции над другими.

Итак, ARM - это более простая архитектура, которая приводит к небольшой площади кремния и множеству функций экономии энергии, в то время как x86 становится энергетическим зверем с точки зрения потребления и производства энергии.

О вопросе "Является ли архитектура x86 специально разработанной для работы с клавиатурой, а ARM ожидает, что она будет мобильной?". `x86` специально не предназначен для работы с клавиатурой ни `ARM` для мобильных устройств. Однако опять же из-за основных архитектурных решений на самом деле x86 также имеет инструкции для работы непосредственно с `IO`, в то время как у ARM нет. Однако со специализированными шинами ввода-вывода, такими как USB, потребность в таких функциях также исчезает.

Если вам нужен документ для цитирования, вот что [Руководство программистов серии Cortex-A (4.0)](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0013d/index.html) рассказывает о различиях между архитектурами RISC и CISC:

>  ARM-процессор - это компьютер с сокращенным набором инструкций (RISC) процессор.
> 
>  Процессоры с комплексными командами (CISC), например x86, имеют богатый набор команд, способный выполнять сложные вещи с одной инструкцией. Такие процессоры часто имеют значительные количества внутренней логики, которые декодируют машинные инструкции для последовательности внутренних операций (микрокод).
> 
>  Архитектуры RISC, в контрастность, имеют меньшее количество более общих инструкций, которые могут выполняться со значительно меньшим количеством транзисторов, что делает кремний дешевле и эффективнее. Как и другие RISC архитектуры, ядра ARM имеют большое количество универсальных регистры и многие команды выполняются за один цикл. В нем есть простые режимы адресации, где все адреса загрузки/хранения могут быть определяется из содержимого регистра и полей инструкций.
> 
> 
> 

Компания ARM также предоставляет статью под названием  ["Статьи по архитектуре, процессорам и устройствам"](http://infocenter.arm.com/help/topic/com.arm.doc.dht0001a/index.html) , в которой описываются, как эти термины относятся к их бизнесу.

 .i1a { width: 336px; height: 280px; }
 @media(min-width: 768px) { .i1a { width: 728px; height: 90px; } }
 @media(min-width: 992px) { .i1a { width: 360px; height: 300px; } }
 @media(min-width: 1083px) { .i1a { width: 728px; height: 90px; } }

 (adsbygoogle = window.adsbygoogle || []).push({});

  **Пример сравнения архитектуры набора команд:**

Например, если вам понадобится какой-то побочный блок сравнения памяти в вашем приложении (сгенерированный компилятором, пропуская данные), вот как это могло бы выглядеть на `x86`

```
repe cmpsb         /* repeat while equal compare string bytewise */

```

в то время как `ARM` кратчайшая форма может выглядеть (без проверки ошибок и т.д.)

```
top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2    /* subtract r2 from r3 and put result into r2      */
beq  top           /* branch(/jump) if result is zero                 */

```

 который должен дать вам подсказку о том, как наборы инструкций RISC и CISC отличаются по сложности.

 

Ничто не имеет ничего общего с клавиатурой или мобильным телефоном, кроме того, что в течение многих лет у ARM было довольно существенное преимущество с точки зрения энергопотребления, что сделало его привлекательным для всех видов устройств с батарейным питанием.

Что касается фактических различий: ARM имеет больше регистров, поддерживаемое предсказание для большинства инструкций задолго до того, как Intel добавила его, имеет режим "большого пальца", который предназначен прежде всего для увеличения плотности кода (так что программа вписывается в меньшую память) и имеет долгое время включали всевозможные методы (назовите их "трюками", если хотите), чтобы экономить энергию почти везде, где это возможно.

 .i2a { width: 336px; height: 280px; }
 @media(min-width: 768px) { .i2a { width: 728px; height: 90px; } }
 @media(min-width: 992px) { .i2a { width: 360px; height: 300px; } }
 @media(min-width: 1083px) { .i2a { width: 728px; height: 90px; } }

 (adsbygoogle = window.adsbygoogle || []).push({});

В свое время Intel уделяет гораздо больше внимания скорости, чем потреблению энергии. Они начали уделять особое внимание потреблению энергии в первую очередь в контексте ноутбуков. Для ноутбуков их типичная мощность составляла порядка 6 Вт для довольно маленького ноутбука. Совсем недавно (совсем недавно) они начали нацеливаться на мобильные устройства (телефоны, планшеты и т.д.). Для этого рынка они смотрят максимум на пару ватт или около того. Они, похоже, хорошо справляются с этим, хотя их подход существенно отличается от ARM, подчеркивая технологию изготовления, где ARM в основном подчеркивает микроархитектуру (неудивительно, учитывая, что ARM продает проекты и оставляет изготовление другим).

 

Дополнительно к [первый абзац Джерри Коффина](https://stackoverflow.com/users/179910/jerry-coffin). Т.е. конструкция ARM дает более низкое энергопотребление.

Компания `ARM`, только лицензирует технологию ЦП. Они не делают физические чипы. Это позволяет другим компаниям добавлять различные периферийные технологии, обычно называемые  [**SOC**](http://en.wikipedia.org/wiki/System_on_chip) или система-на-чипе. Является ли устройство планшетом, мобильным телефоном или развлекательной системой в автомобиле. Это позволяет производителям чипов адаптировать остальную часть чипа к конкретному приложению. Это имеет дополнительные преимущества,

* Стоимость нижней платы
* Нижняя мощность (примечание1)
* Легкое производство
* Меньший форм-фактор

 `ARM` поддерживает поставщиков SOC с [AMBA](http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture), позволяя разработчикам SOC покупать на полке сторонние модули; как контроллеры Ethernet, памяти и прерываний. Некоторые другие платформы процессоров поддерживают это, например [MIPS](http://en.wikipedia.org/wiki/MIPS_architecture), но MIPS не является сознательным.

Все это полезно для работы с карманным/батарейным питанием. Некоторые из них просто хороши. Кроме того, `ARM` имеет историю устройств с батарейным питанием; [Apple Newton](http://en.wikipedia.org/wiki/Apple_Newton), [Psion Organizers](http://en.wikipedia.org/wiki/Psion#The_Psion_Organiser). Некоторые компании создавали [инфраструктуру программного обеспечения PDA](http://en.wikipedia.org/wiki/Symbian_OS), чтобы создать устройства типа  **смартфон**. Несмотря на это, больше тех, кто изобрел GUI для использования с  **смартфоном**.

Увеличение набора инструментов `Open source` и `operating systems` также облегчило различные чипы `SOC`. У закрытой организации возникнут проблемы с попыткой поддерживать все различные устройства, доступные для ARM. Две самые популярные сотовые платформы, Andriod и OSx/IOS, основаны на [Linux](http://en.wikipedia.org/wiki/Linux) и [FreeBSD, Mach и NetBSD](http://en.wikipedia.org/wiki/OS_X) os's. `Open source` помогает `SOC` поставщики предоставляют поддержку программного обеспечения для своих наборов микросхем.

Надеюсь, почему  **x86** используется для клавиатуры, само собой разумеется. В нем есть программное обеспечение, и, что еще важнее, люди, обученные использованию этого программного обеспечения. [Netwinder](http://www.netwinder.org/about.html) - это одна система `ARM`, которая изначально была предназначена для клавиатуры. Кроме того, производитель в настоящее время рассматривает ARM64 для рынка серверов. Сила/нагрев является проблемой в центрах обработки данных 24/7.

Поэтому я бы сказал, что  **экосистема**, которая растет вокруг этих чипов, так же важна, как и функции, такие как потребление низкой мощности. `ARM` в течение некоторого времени (в середине и в конце 1980-х годов) стремился к маломощным вычислениям с более высокой производительностью, и на них много людей.

Примечание1. Многим чипам нужны драйверы шины для взаимной связи с известными напряжениями и приводом. Кроме того, обычно отдельным чипам нужны поддерживающие конденсаторы и другие силовые компоненты, которые могут использоваться в системе  **SOC**.

 

Архитектура ARM была первоначально разработана для персональных компьютеров Acorn (см. [Acorn Archimedes](https://en.wikipedia.org/wiki/Acorn_Archimedes), около 1987 года и [RiscPC](https://en.wikipedia.org/wiki/RiscPC)), которые были такими же персональными компьютерами на базе клавиатуры, что и x86-модели IBM PC. Только более поздние реализации ARM были в первую очередь ориентированы на мобильный и встроенный сегмент рынка.

Первоначально простые RISC-процессоры с примерно эквивалентной производительностью могли быть сконструированы гораздо меньшими инженерными группами (см. [Berkeley RISC](https://en.wikipedia.org/wiki/Berkeley_RISC)), чем те, которые работают над x86 в Intel.
Но, в настоящее время, самые быстрые чипы ARM имеют очень сложные многозадачные системы диспетчеризации заказов вне порядка, разработанные крупными инженерными командами, а ядра x86 могут иметь нечто вроде ядра RISC, которое подается с помощью модуля перевода инструкций.

Таким образом, любые текущие различия между двумя архитектурами больше связаны с конкретными потребностями рынка в продуктовых нишах, которые нацелены на команды разработчиков. (Случайное мнение: ARM, вероятно, делает больше лицензионных сборов от встроенных приложений, которые, как правило, намного более ограничены в мощности и стоимости. И Intel должна поддерживать преимущество производительности на компьютерах и серверах за их прибыль. Таким образом, вы видите разные оптимизации реализации.)

 

ARM похож на итальянский спортивный автомобиль:

* Хорошо сбалансированный, хорошо настроенный, двигатель. Дает хорошее ускорение и максимальную скорость.
* Отличные погони, тормоза и подвеска. Быстро останавливается, может поворачиваться без замедления.

x86 похож на американский автомобиль с мышцами:

* Большой двигатель, большой топливный насос. Дает отличную максимальную скорость и ускорение, но использует много топлива.
* Ужасные тормоза, вам нужно назначить встречу в свой дневник, если вы хотите замедлить работу.
* Ужасное рулевое управление, вам нужно замедлить угол.

Вкратце: x86 был разработан в 60-х годах и хорош по прямой (но использует много топлива). Рука использует мало топлива, не замедляется для углов (ветвей).