вторник, 3 ноября 2020 г.

Процессоры ARM

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

История

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

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

Второй компьютер фирмы Acorn — Archimedes — был полностью построен на ARM: 32-битный ARM 2 на 8 МГц с ОЗУ до 8 Мб, флоппи-привод и опциональный жесткий диск. Компьютер мог крутую по тем временам графику: 640x200 точек или 640x512 с 256цветами.
Главная особенность ARM это энергосбережение. Используя принцип RISC (команды должны быть проще), процессор отказался от энергозатратного выполнения микрокода - внутренних программ "зашитых" в процессоре.
Разработчики 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 имеет 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-битные.
Когда смотришь на список инструкций ARM, думаешь: "Зачем нужна вся эта чертова куча инструкций, например MLA - умножение и сложение в одном лице". Автор недоумевает до сих пор.
Важная (и полезная) особенность ассемблера ARM'а это условное выполнение любой инструкции. К тому же, инструкции могут быть как 16-битными по длине, так и 32-битными (ассемблеру можно указать это напрямую).

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

Первый уровень списка показывает поколение или набор инструкций. Второй уровень — версию ядра.
  1. ARMv5
    • ARM9. Частота до 400МГц. К нему так же относится ARM9TDMI, имеющий Thumb-2, Debug, Multiplier и ICE. Является улучшением своего предшественника - ARM7 (уменьшили риск перегрева, увеличение частоты, ускорение выполнения некоторых процессорных инструкций).
  2. ARMv6
    • ARM11. Частота до 1ГГц (на этой частоте процессор выполняет чуть более 1 миллиона инструкций в секунду).
  3. ARMv7
    1. Cortex-A8. NEON (во всех без исключения). Позволяет работать со словами данных до 128бит. Это позволяет декодировать аудио MP3 на 10МГц и кодировать AMR (чаще всего используется для записи голоса) на 13МГц.
    2. Cortex-A9.
      • Архитектура: 8-уровневый конвейер. Сопроцессор для работы с плавающей точкой VFPv3.
      • Наборы инструкций: NEON (опционально), Jazelle (аппаратное декодирование Java-кода в ассемблерные инструкции), Thumb-2 (сжимает некоторые инструкции), аппаратурная виртуализация.
      • Память: L1 32Кб/32Кб, L2 до 9Мб (на кластер ядер).
    3. Cortex-A15.
      • Архитектура: до 4 ядер на кластер, до двух кластеров на чип. По одному сопроцессору плавающей точкой (VFPv3) на ядро.
      • Наборы инструкций: NEON, Jazelle, Thumb-2, TrustZone (защитная система), аппаратная виртуализация. Адресация до 1Тб ОЗУ (на процесс как обычно доступно 2^32 бит).
      • Память: L1 32Кб/32Кб (на ядро), L2 до 4Мб (на кластер ядер).
    4. Cortex-A7.
      1. Архитектура ядра для замены Cortex-A8 и/или использования как элемент гетерогенной системы (big.LITTLE).VFPv4 на ядро. 1,9 DMIPS/MHz (!!). От 1 до 4 ядер в кластере, до 2 кластеров (8 однородных ядер максимум).
      2. Наборы инструкций: NEON, Jazelle, Thumb-2, аппаратная виртуализация.
      3. Память: 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.
  2. 2011 год. Exynos 4210
    • 2*Cortex-A9@1.2ГГц, видеопроцессор: Mali-400MP4.
  3. 2012 год. Exynos 4412
    • 4*Cortex-A9@1.8ГГц, видеопроцессор: Mali-400MP4.
  4. 2012 год. Exynos 5250
    • 2*Cortex-A15@1.7ГГц, видеопроцессор: Mali-T604.
  5. 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


    • 1*Cortex-A8@1ГГц, видео: PowerVR SGX540.
  2. 2011 год. Apple A5. До сих пор использовался в iPad 2, а теперь и в iPad mini.


    • 2*Cortex-A9, видео: PowerVR SGX543MP2.
  3. 2012 год: Apple A5X. Выпущен для iPad 3 с Retina-дисплеем, ибо старому чипу такой массив пикселей не потянуть.


    • 4*Cortex-A9, видео: PowerVR SGX543MP4.
  4. 2012 год. Apple A6. Первая (и пока последняя) попытка Apple сделать свою модификацию ARMv7. Трудится в iPhone 5.


    • 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.
  2. 2012 год. Tegra 3. Однозначно интересный SoC, особенно благодаря интересной идее - сделать еще одно ядро, значительно более медленное чем остальные и благодаря этому сберегать электричество.
    • 4*CortexA9@1.4GHz+@500MHz, видео: 12 ядреный GeForce. Один 32-битный канал, DDR2-1066/DDR3-1500.
  3. 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.
  2. Snapdragon S1 (MSM7227)
    • ARM11@600МГЦ, видео: Adreno 200.
  3. Snapgragon S2 (MSM8255)
    • Scorpion(своя разработка)@1,4ГГц, видео: Adreno 205.
  4. Snapdragon S3 (APQ8060,MSM8260,MSM8660)
    • 2*Scorpion, видео: Adrron 220.
И еще десятки фирм, например TI (Texas Instruments), MediaTek, Allwinner Technology и Fuzhou Rockchip Electronics.

Комментариев нет:

Отправить комментарий