Архитектура x86 специально разработана для работы с клавиатурой, а ARM ожидает мобильности? Каковы основные различия между ними?
Архитектура x86 специально разработана для работы с клавиатурой, а ARM ожидает мобильности? Каковы основные различия между ними?
Ответы:
ARM
является архитектурой RISC (вычисления с сокращенным набором инструкций), в то время как x86
является архитектурой CISC (вычисления сложных наборов команд).
Основное различие между ними в этом аспекте состоит в том, что инструкции ARM работают только с регистрами с несколькими инструкциями для загрузки и сохранения данных из / в память, в то время как x86 также может работать непосредственно с памятью. Вплоть до v8 ARM была родной 32-битной архитектурой, предпочитая четырехбайтовые операции над другими.
Таким образом, ARM представляет собой более простую архитектуру, которая приводит к небольшой площади кремния и большому количеству функций энергосбережения, а x86 становится чудовищем в плане энергопотребления и производства.
О вопросе « Архитектура x86 специально разработана для работы с клавиатурой, в то время как ARM ожидает мобильность? ». x86
не предназначен специально для работы с клавиатурой и ARM
для мобильных устройств. Однако, опять же, из-за основных архитектурных решений, x86 также имеет инструкции для работы напрямую, IO
а ARM - нет. Однако со специализированными шинами ввода-вывода, такими как USB, потребность в таких функциях также исчезает.
Если вам нужен документ для цитирования, вот что рассказывает Руководство по программированию серии Cortex-A (4.0) о различиях между архитектурами RISC и CISC:
Процессор ARM - это компьютер с сокращенным набором команд (RISC).
Компьютеры со сложным набором инструкций (CISC), такие как x86, имеют богатый набор команд, способных выполнять сложные действия с помощью одной инструкции. Такие процессоры часто имеют значительное количество внутренней логики, которая декодирует машинные инструкции в последовательности внутренних операций (микрокод).
RISC-архитектуры, напротив, имеют меньшее количество инструкций более общего назначения, которые могут выполняться при значительно меньшем количестве транзисторов, что делает кремний более дешевым и более энергоэффективным. Как и другие архитектуры RISC, ядра ARM имеют большое количество регистров общего назначения, и многие инструкции выполняются за один цикл. Он имеет простые режимы адресации, где все адреса загрузки / сохранения могут быть определены из содержимого регистра и полей инструкций.
Компания ARM также предоставляет статью под названием « Архитектура, процессоры и разработка устройств», в которой описывается, как эти термины применяются к их бизнесу.
Пример сравнения архитектуры набора команд:
Например, если вам понадобится какой-то блок сравнения побайтной памяти в вашем приложении (сгенерированный компилятором, пропуская детали), это может выглядеть так: 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 добавила их, и уже давно включает в себя всевозможные методы (называют их «хитростями», если хотите) для экономии энергии практически везде, где это возможно.
Существует также значительное различие в том, как эти две команды кодируют. Intel использует довольно сложную кодировку переменной длины, в которой инструкция может занимать от 1 до 15 байт. Это позволяет программам быть очень маленькими, но делает декодирование команд относительно трудным (например, быстрое параллельное декодирование команд больше похоже на полный кошмар).
ARM имеет два разных режима кодирования команд: ARM и THUMB. В режиме ARM вы получаете доступ ко всем инструкциям, а кодировка чрезвычайно проста и быстро декодируется. К сожалению, код режима ARM имеет тенденцию быть достаточно большим, поэтому программа обычно занимает примерно вдвое больше памяти, чем код Intel. Режим большого пальца пытается смягчить это. Он по-прежнему использует довольно обычное кодирование команд, но уменьшает большинство команд с 32 бит до 16 бит, например, за счет уменьшения количества регистров, исключения предикации из большинства команд и уменьшения диапазона ветвей. По крайней мере , в моем опыте, это по- прежнему не дают обычно достаточнонастолько плотный код, насколько может получить код x86, но он достаточно близок, а декодирование все еще довольно просто и понятно. Более низкая плотность кода означает, что вам обычно требуется как минимум немного больше памяти и (как правило, более серьезно) больший кэш, чтобы получить эквивалентную производительность.
В свое время Intel уделяла гораздо больше внимания скорости, чем потреблению энергии. Они начали акцентировать энергопотребление в первую очередь на ноутбуках. Для ноутбуков их типичная мощность составляла порядка 6 Вт для довольно маленького ноутбука. Совсем недавно ( намного позже) они начали ориентироваться на мобильные устройства (телефоны, планшеты и т. Д.). Для этого рынка они рассчитывают на пару ватт или около того максимум. Похоже, что в этом они преуспевают, хотя их подход существенно отличается от ARM, подчеркивая технологию изготовления, где ARM в основном делает упор на микроархитектуре (что неудивительно, учитывая, что ARM продает проекты и оставляет изготовление другим).
В зависимости от ситуации энергопотребление ЦП зачастую более важно, чем его энергопотребление. По крайней мере, поскольку я использую термины, энергопотребление относится к энергопотреблению (более или менее) мгновенно. Однако энергопотребление нормализуется по скорости, поэтому, если (например) ЦП A потребляет 1 Вт в течение 2 секунд для выполнения работы, а ЦП B потребляет 2 Ватта в течение 1 секунды для выполнения одной и той же работы, оба ЦП потребляют одинаковое общее количество. энергии (две ватт-секунды), чтобы выполнить эту работу - но с процессором B вы получаете результаты в два раза быстрее.
Процессоры ARM, как правило, работают очень хорошо с точки зрения энергопотребления. Так что если вам нужно что-то, что требует «присутствия» процессора почти постоянно, но на самом деле не выполняет много работы, они могут работать довольно хорошо. Например, если вы проводите видеоконференции, вы собираете несколько миллисекунд данных, сжимаете их, отправляете, получаете данные от других, распаковываете их, воспроизводите и повторяете. Даже действительно быстрый процессор не может тратить много времени на сон, поэтому для таких задач ARM отлично справляется.
Процессоры Intel (особенно их процессоры Atom, которые фактически предназначены для приложений с низким энергопотреблением) чрезвычайно конкурентоспособны с точки зрения энергопотребления. Несмотря на то, что они работают почти на полной скорости, они потребляют больше энергии, чем большинство процессоров ARM, но они также быстро заканчивают работу и могут быстрее вернуться в спящий режим. В результате они могут сочетать хорошее время автономной работы с хорошей производительностью.
Поэтому, сравнивая их, вы должны быть осторожны с тем, что вы измеряете, чтобы быть уверенным, что это отражает то, о чем вы действительно заботитесь. ARM хорошо справляется с потреблением энергии, но в зависимости от ситуации вы можете легко заботиться о потреблении энергии, а не о мгновенном потреблении энергии.
Дополнительно к первому абзацу Джерри Коффина . То есть дизайн ARM дает меньшее энергопотребление.
Компания ARM
только лицензирует технологию CPU. Они не делают физические чипы. Это позволяет другим компаниям добавлять различные периферийные технологии, обычно называемые SOC или система на кристалле. Является ли устройство планшетом, мобильным телефоном или автомобильной развлекательной системой. Это позволяет производителям микросхем адаптировать остальную часть микросхемы к конкретному приложению. Это имеет дополнительные преимущества,
ARM
поддерживает поставщиков SOC с AMBA , позволяя разработчикам SOC приобретать готовые сторонние модули; как Ethernet, память и контроллеры прерываний. Некоторые другие процессорные платформы, такие как MIPS , поддерживают это, но MIPS не так энергосберегающий.
Все это выгодно для портативного / батарейного дизайна. Некоторые просто хороши вокруг. Кроме того, ARM
имеет историю устройств с батарейным питанием; Apple Newton , Psion Организаторы . PDA программное обеспечение инфра-структуры было привлечено некоторыми компаниями для создания смарт - телефон устройств типа. Хотя те, кто заново изобрел графический интерфейс для использования со смартфоном , добились большего успеха .
Подъем Open source
наборов инструментов, а operating systems
также облегчил различные SOC
чипы. У закрытой организации возникнут проблемы с попыткой поддержки всех различных устройств, доступных для ARM. Две самые популярные сотовые платформы, Andriod и OSx / IOS, основаны на Linux и FreeBSD, Mach и NetBSD . Open Source
помогает SOC
поставщикам обеспечивать программную поддержку своих чипсетов.
Надеюсь, почему x86 используется для клавиатуры , очевидно. У этого есть программное обеспечение, и что более важно люди, обученные использовать это программное обеспечение. Netwinder - это ARM
система, изначально разработанная для клавиатуры . Кроме того, производители в настоящее время ищут ARM64 для рынка серверов. Мощность / тепло - это проблема в круглосуточных дата-центрах.
Поэтому я бы сказал, что экосистема, которая растет вокруг этих чипов, так же важна, как и функции, такие как низкое энергопотребление. ARM
в течение некоторого времени (с середины до конца 1980-х годов) они стремились к низкому энергопотреблению и высокопроизводительным вычислениям, и у них много людей.
Примечание 1: для нескольких микросхем требуются драйверы шины для взаимодействия при известных напряжениях и привода. Также, как правило, отдельным микросхемам необходимы поддерживающие конденсаторы и другие компоненты питания, которые могут использоваться в системе SOC .
ARM похож на итальянский спортивный автомобиль:
X86 похож на американский мускул кар:
В итоге: x86 основан на дизайне 1974 года и хорош по прямой (но потребляет много топлива). Рука использует мало топлива, не тормозит на поворотах.
Метафора закончена, вот некоторые реальные различия.
Архитектура ARM изначально была разработана для персональных компьютеров Acorn (см. Acorn Archimedes , около 1987 г. и RiscPC ), которые были такими же персональными компьютерами на основе клавиатуры, как и модели IBM PC на базе x86. Лишь более поздние реализации ARM были ориентированы в первую очередь на сегмент мобильных и встраиваемых систем.
Первоначально простые процессоры RISC с примерно эквивалентной производительностью могли разрабатывать гораздо меньшие инженерные группы (см. Berkeley RISC ), чем те, кто работает над разработкой x86 в Intel.
Но в настоящее время самые быстрые чипы ARM имеют очень сложные многозадачные блоки диспетчеризации команд, разработанные большими группами разработчиков, и ядра x86 могут иметь что-то вроде ядра RISC, питаемого блоком трансляции команд.
Таким образом, любые текущие различия между двумя архитектурами в большей степени связаны с конкретными рыночными потребностями продуктовых ниш, на которые ориентируются команды разработчиков. (Случайное мнение: ARM, вероятно, делает больше в лицензионных отчислениях от встраиваемых приложений, которые, как правило, имеют гораздо большую мощность и ограничены в затратах. И Intel необходимо поддерживать преимущество в производительности ПК и серверов для получения прибыли. Таким образом, вы видите различные оптимизации реализации.)