Найти в Дзене
Asocial Format C

Процессоры ARM

Оглавление

Как уже было отмечено в статье, существует как минимум два подхода к созданию списка команд, которые будет выполнять процессор: CISC и RISC. CISC-процессоры мы уже рассмотрели, теперь стоит обратить свое внимание на RISC-процессоры, на их типичного представителя — ARM-процессоры.

История

В 1980-х годах в Великобритании BBC объявила конкурс среди производителей ПК. За победителем закреплялось поставлять свои компьютеры в британские школы под эгидой Компьютеризации Страны. В фильме «Micro Men» (в русской озвучке - «Люди-компьютеры») развернуто и с подробностями показано противостояние Sinclair Computers и Acorn Computers. Выиграла таки Acorn.

BBC Micro
BBC Micro

Они начали поставлять компьютеры BBC Micro (6502A, 16...64 Кб ОЗУ, 32..48 Кб ПЗУ, телевизор в качестве монитора, четырехканальный звуковой генератор). Казалось бы, при чем тут ARM? Но некоторые модели BBC Micro оснащались сопроцессором ARM 1. Чудо британской инженерии! Аббревиатура ARM означает «Acorn RISC Machine».

-3

Второй компьютер фирмы Acorn — Archimedes — был полностью построен на ARM: 32-битный ARM 2 на 8 МГц с ОЗУ до 8 Мб, флоппи-привод и опциональный жесткий диск. Компьютер мог крутую по тем временам графику: 640x200 точек или 640x512 с 256цветами.

Главная особенность ARM это энергосбережение. Используя принцип RISC (команды должны быть проще), процессор отказался от энергозатратного выполнения микрокода - внутренних программ "зашитых" в процессоре.

Разработчики Acorn (2008)
Разработчики Acorn (2008)

Не сумевшая вовремя измениться Acorn Computers прекратила своё существование в 2000-х, но ARM Ltd существует до сих пор. Теперь считается, что ARM - это акроним - Advanced RISC Machine. Эта корпорация разрабатывает и продает лицензии на производство процессоров на ARM-архитектуре третьим фирмам.

Но чистый ARM-процессор в современных устройствах использовать практически бессмысленно, поэтому их объединяют с дополнительными устройствами на одной микросхеме и получают SoC (System on chip - систему на чипе).

SoC'и включают: контроллер ОЗУ, графический ускоритель, видеокодек, аудиокодек и модули беспроводной связи. Модули для SoC'ов может разрабатывать кто угодно, например графические ускорители проектируют и сам ARM Ltd (Mali), Qualcomm (Adreno) и NVIDIA (GeForce).

Когда смотришь на список инструкций ARM, думаешь: "Зачем нужна вся эта чертова куча инструкций, например MLA - умножение и сложение в одном лице". Автор недоумевает до сих пор.
Важная (и полезная) особенность ассемблера ARM'а это условное выполнение любой инструкции. К тому же, инструкции могут быть как 16-битными по длине, так и 32-битными (ассемблеру можно указать это напрямую).Внутри процессора
ARM имеет 13 32-битных регистров общего назначения и 8 специального:
указатель стека (SP) - указывает на вершину стека и физически представляет из себя два регистра - один общий, другой для процесса.
регистр связи (LR) - используется для сохранения информации об адресе возврата при уходе на обработку прерываний, вызовах функций и обработке исключений.
счетчик команд (PC) - содержит адрес текущей инструкции.

программный регистр состояния(PSR) - невидимыми полями делится на:регистр состояния прерывания - содержит номер исключения для обработчика,
регистр состояния приложения - содержит флаги Negative, Zero, Carry, Overflow, Saturation (НЁХ).
регистр состояния выполнения - содержит бит состояния Thumb инструкции, и биты состояния выполнения для инструкций.
регистр маски приоритетов (PRIMASK) - предотвращает активацию всех исключений с конфигурируемым приоритетом,

регистры маски исключений - запрещает обработку исключений (когда надо что-то выполнить быстро и обрабатывать ошибки некогда),
регистр маски сбоев (FAULTMASK) - предотвращает активацию всех исключений.
регистр базового приоритета маски (BASEPRI) - предотвращает активацию всех исключений с таким же или более низким уровнем приоритета,
регистр управления (CONTROL) - задает текущий стек и уровень привилегий выполняемой процессором программы.
Некоторые инструкции (на примере Cortex-M3):NOP - нет операции,
ADD, SUB, MUL, MOV - сложение, вычитание, умножение, перемещение,
RSB - обратное (reverse - отсюда и R в названии) вычитание. Если SUB это r0 = r1 — r2, о RSB это r0 = r2 — r1,
B, BX - обычный и косвенный переход,
CBNZ, CBZ - условные переходы по неравенству и равенству нулю соответственно.
ORR, AND, EOR - логические ИЛИ, И, исключающее ИЛИ.
TEQ - проверка равенства.
LDR, STR - инструкции, ставшие "притчей во языцех" для RISC-машин: ,
SMLAL, SMULL, UMLAL, UMULL - ARM может перемножать 64-битные числа,
SDIV, UDIV - а делить только 32-битные.

Поколения и версии архитектуры

Первый уровень списка показывает поколение или набор инструкций. Второй уровень — версию ядра.

  1. ARMv5
  • ARM9. Частота до 400МГц. К нему так же относится ARM9TDMI, имеющий Thumb-2, Debug, Multiplier и ICE. Является улучшением своего предшественника - ARM7 (уменьшили риск перегрева, увеличение частоты, ускорение выполнения некоторых процессорных инструкций).
  1. ARMv6
  • ARM11. Частота до 1ГГц (на этой частоте процессор выполняет чуть более 1 миллиона инструкций в секунду).
  1. ARMv7
  2. Cortex-A8. NEON (во всех без исключения). Позволяет работать со словами данных до 128бит. Это позволяет декодировать аудио MP3 на 10МГц и кодировать AMR (чаще всего используется для записи голоса) на 13МГц.
  3. Cortex-A9.
  • Архитектура: 8-уровневый конвейер. Сопроцессор для работы с плавающей точкой VFPv3.
  • Наборы инструкций: NEON (опционально), Jazelle (аппаратное декодирование Java-кода в ассемблерные инструкции), Thumb-2 (сжимает некоторые инструкции), аппаратурная виртуализация.
  • Память: L1 32Кб/32Кб, L2 до 9Мб (на кластер ядер).
  1. Cortex-A15.
  • Архитектура: до 4 ядер на кластер, до двух кластеров на чип. По одному сопроцессору плавающей точкой (VFPv3) на ядро.
  • Наборы инструкций: NEON, Jazelle, Thumb-2, TrustZone (защитная система), аппаратная виртуализация. Адресация до 1Тб ОЗУ (на процесс как обычно доступно 2^32 бит).
  • Память: L1 32Кб/32Кб (на ядро), L2 до 4Мб (на кластер ядер).
  1. Cortex-A7.
  2. Архитектура ядра для замены Cortex-A8 и/или использования как элемент гетерогенной системы (big.LITTLE).VFPv4 на ядро. 1,9 DMIPS/MHz (!!). От 1 до 4 ядер в кластере, до 2 кластеров (8 однородных ядер максимум).
  3. Наборы инструкций: NEON, Jazelle, Thumb-2, аппаратная виртуализация.
  4. Память: L1 8-64 Кб/8-64 Кб (инструкции/данные), L2 0-1024 Кб.

Модели современных ARM SoC

Samsung
Процессоры Samsung начали использоваться еще в первом iPhone (ARM11), но выстрелила фирма в 2010 году своим чипом Hummingbird.

  1. 2010 год. Hummingbird (a.k.a. Exynos 3110)
  • 1*Cortex-A8@1ГГц, видеопроцессор PowerVR SGX540.
  1. 2011 год. Exynos 4210
  • 2*Cortex-A9@1.2ГГц, видеопроцессор: Mali-400MP4.
  1. 2012 год. Exynos 4412
  • 4*Cortex-A9@1.8ГГц, видеопроцессор: Mali-400MP4.
  1. 2012 год. Exynos 5250
  • 2*Cortex-A15@1.7ГГц, видеопроцессор: Mali-T604.
  1. 2013 год. Exynos 5410
  • 4*Cortex-A15@1.8ГГц+4*Cortex-A7@ХЗГГц, видео: PowerVR SGX544MP3.

Apple
Первый ARM-чип Apple (если не считать давнюю историю с Apple Newton) был Apple A4 для iPhone 4 и iPad. По характеристикам очень напоминает Hummingbird, что должно намекать...

1. 2010 год. Apple A4

-5

1*Cortex-A8@1ГГц, видео: PowerVR SGX540.

2.2011 год. Apple A5. До сих пор использовался в iPad 2, а теперь и в iPad mini.

-6

2*Cortex-A9, видео: PowerVR SGX543MP2.

3.2012 год: Apple A5X. Выпущен для iPad 3 с Retina-дисплеем, ибо старому чипу такой массив пикселей не потянуть.

-7

4*Cortex-A9, видео: PowerVR SGX543MP4.

4. 2012 год. Apple A6. Первая (и пока последняя) попытка Apple сделать свою модификацию ARMv7. Трудится в iPhone 5.

-8

2*Swift, видео: PowerVR SGX543MP3.

5.2012 год. Apple A6X. Обитает в iPad 4.

  • 2*Swift, видео: PowerVR SGX554MP4.

NVIDIA
История серьезной работы NVIDIA с ARM началась в 2009 году с процессора Tegra APX 2600 для MS Zune HD.

  1. Tegra 2. Сумрачный гений разработчиков NVIDIA решил, что можно отказаться от декодирования видео в пользу 3D графики. Однако это не помешало чипу стать весьма популярным.
  • 2*Cortex-A9 (без NEON), видео: 4-х ядерная GeForce.
  1. 2012 год. Tegra 3. Однозначно интересный SoC, особенно благодаря интересной идее - сделать еще одно ядро, значительно более медленное чем остальные и благодаря этому сберегать электричество.
  • 4*CortexA9@1.4GHz+@500MHz, видео: 12 ядреный GeForce. Один 32-битный канал, DDR2-1066/DDR3-1500.
  1. 2013 год. Tegra 4. Продолжение идеи энергосбережения и общие улучшения структуры чипа.
  • 4*CortexA15@1.9GHz+CortexA15@500MHz, видео: 72-ядерный UPL. 2-х канальный (по 32 бита) DDR2/DDR3.

Qualcomm
Американская компания первоначально специализирующаяся на беспроводных средствах связи в 2005 году лицензировала у ARM ядро Cortex A8 и сделала на его основе свое, под названием Scorpion. Пришедшую таким образом к успеху фирму назвали чуть ли "новым интелом".

  1. 2008 год. Snapdragon S1 (MSM7201A). SoC первого в мире Android-телефона.
  • ARM11@525МГц, вдео: Adreno 130.
  1. Snapdragon S1 (MSM7227)
  • ARM11@600МГЦ, видео: Adreno 200.
  1. Snapgragon S2 (MSM8255)
  • Scorpion(своя разработка)@1,4ГГц, видео: Adreno 205.
  1. Snapdragon S3 (APQ8060,MSM8260,MSM8660)
  • 2*Scorpion, видео: Adrron 220.

И еще десятки фирм, например TI (Texas Instruments), MediaTek, Allwinner Technology и Fuzhou Rockchip Electronics.

#ассемблер #компьютер #процессоры #ЭВМ #arm #cisc #risc #технологии