Обратная разработка MCU

Разблокировка микроконтроллеров — MikaTech

Наши ценности и цели

О компании MikaTech

Время пролетело незаметно: с того дня, когда мы в 1998 году выполнили наш первый проект по обратной разработке MCU 8051, до момента создания нашей миллионной лаборатории обратной разработки в 2012 году прошло 14 лет. Теперь мы начинаем новый бизнес по разработке встроенных систем визуализации и надеемся прослужить ещё 10 лет.

подпись Питер Ли Соучредитель и генеральный директор

Обратная разработка микроконтроллеров на архитектуре ARM

  • Введение в архитектуру ARM
  • Введение в архитектуру ARM Архитектура ARM представляет собой обширное семейство процессорных проектов с сокращённым набором команд (RISC), первоначально созданных и в настоящее время лицензируемых британской технологической компанией ARM Holdings. Архитектура зародилась в 1980-х годах[2], когда компания Acorn Computers Ltd разработала процессорное ядро для своих настольных компьютеров. Позже технология была выделена в независимый бизнес, который превратился в современную ARM Holdings. По статистике, по состоянию на 2013 год ARM являлась самой распространённой 32-разрядной архитектурой набора команд по объёму производства.[3][4] Согласно официальным данным ARM Holdings, только в 2010 году производители чипов отгрузили в общей сложности 6,1 миллиарда процессорных устройств на базе ARM. Эти устройства составляли 95% всех смартфонов, 35% цифровых телевизоров и приставок, а также 10% мобильных вычислительных устройств по всему миру.

    Работая исключительно как поставщик интеллектуальной собственности (IP), ARM Holdings никогда не производит физические полупроводниковые чипы самостоятельно. Вместо этого компания коммерциализирует свои процессорные проекты, выдавая лицензии на проектирование внешним производителям полупроводников по всей отрасли. Широкий спектр современных систем на кристалле (SoC) использует процессорные ядра ARM, включая Qualcomm Snapdragon, NVIDIA Tegra, Marvell XScale и Texas Instruments OMAP, а также собственное семейство процессоров Cortex и пользовательские SoC Apple, применяемые в iPhone. Термин ARM изначально был аббревиатурой Acorn RISC Machine[6]; после отказа от бренда Acorn определение было переименовано в Advanced RISC Machine. Основанная на фундаментальных принципах RISC, аппаратная часть процессора ARM требует значительно меньше транзисторов, чем традиционные процессоры со сложным набором команд (CISC), используемые в настольных компьютерах. Эта упрощённая аппаратная структура даёт серьёзные преимущества, включая снижение стоимости производства, уменьшение тепловыделения и значительное снижение энергопотребления. Эти характеристики делают архитектуру ARM особенно подходящей для лёгких, портативных, работающих от батарей устройств, таких как смартфоны и планшеты.[7] Благодаря своей простоте разработчики могут интегрировать ядра ARM в компактные маломощные встраиваемые системы на кристалле, объединяющие встроенную память, периферийные интерфейсы, беспроводные модули и другие функциональные компоненты. Персональный цифровой помощник Apple Newton стал одним из первых коммерческих примеров такой методологии, а та же философия оптимизации лежит в основе процессоров Apple A4 и A5, используемых в ранних поколениях iPad. Помимо мобильных встраиваемых устройств, внутренняя простота RISC-проектов ARM также позволяет экономически эффективно реализовывать многоядерные CPU. Инженеры могут достигать более высокой плотности ядер с улучшенной энергоэффективностью, обеспечивая более высокую общую вычислительную производительность для современных серверов, ноутбуков и портативных вычислительных платформ.


  • Микроконтроллеры на архитектуре ARM, доступные для обратной разработки в Mikatech
  • Серия Atmel AT91SAMxxx:
    AT91SAM9XE512 AT91SAM9XE256 AT91SAM9XE128 AT91SAM7S64B AT91SAM7S32B AT91SAM7SE512 AT91SAM7SE256 AT91SAM7SE32 AT91SAM7XC512 AT91SAM7XC256 AT91SAM7XC128 AT91SAM7X512 AT91SAM7X256 AT91SAM7X128 AT91SAM7S161 AT91SAM7S512 AT91SAM7S256 AT91SAM7S128 AT91SAM7S64 AT91SAM7S321 ...
  • Серия NXP LPCxxx:
    LPC1769 LPC1768 LPC1767 LPC1766 LPC1765 LPC1764 LPC1759 LPC1758 LPC1756 LPC1754 LPC1752 LPC1751 LPC1343 LPC1342 LPC1313 LPC1311 LPC1114 LPC1113 LPC1112 LPC1111 LPC2106 LPC2109 LPC2114 LPC2119 LPC2124 LPC2129 LPC2131 LPC2132 LPC2134 LPC2136 LPC2138 LPC2141 LPC2142 LPC2144 LPC2146 LPC2148 LPC2194 LPC2212 LPC2214 LPC2292 LPC2294 LPC2364 LPC2366 LPC2368 LPC2378 LPC1102 LPC1104 LPC1110 LPC1111/002 LPC1111/101 LPC1111/102 LPC1111/103 LPC1111/201 LPC1111/202 LPC1111/203 LPC1112/101 LPC1112/102 LPC1112/103 LPC1112/201 LPC1112/202 LPC1112/203 LPC1113/201 LPC1113/202 LPC1113/203 LPC1113/301 LPC1113/302 LPC1113/303 LPC1114/102 LPC1114/201 LPC1114/202 LPC1114/203 LPC1114/301 LPC1114/302 LPC1114/303 LPC1114/323 LPC1114/333 LPC1115/303 LPC11A02 LPC11A04 LPC11A11/001 LPC11A12/101 LPC11A13/201 LPC11A14/301 LPC11C12/301 LPC11C14/301 LPC11C22/301 LPC11C24/301 LPC11D14/302 LPC11E11/101 LPC11E12/201 LPC11E13/301 LPC11E14/401 LPC11E36/501 LPC11E37/501 LPC11U12/201 LPC11U13/201 LPC11U14/201 LPC11U23/301 LPC11U24/301 LPC11U24/401 LPC11U34/311 LPC11U34/421 LPC11U35/401 LPC11U35/501 LPC11U36/401 LPC11U37/401 LPC11U37/501 LPC1224 LPC1225 LPC1226 LPC1227 LPC12D27 LPC1311 LPC1313 LPC1315 LPC1316 LPC1317 LPC1342 LPC1343 LPC1345 LPC1346 LPC1347 LPC1751 LPC1752 LPC1754 LPC1756 LPC1758 LPC1759 LPC1763 LPC1764 LPC1765 LPC1766 LPC1767 LPC1768 LPC1769 LPC1772 LPC1774 LPC1776 LPC1777 LPC1778 LPC1785 LPC1786 LPC1787 LPC1788 LPC4072 LPC4074 LPC4076 LPC4078 LPC4088 LPC810 LPC811 LPC812 LPC1800 LPC1810 LPC1820 LPC1830 LPC1850 LPC1853 LPC1857 LPC2000 LPC2101 LPC2102 LPC2103 LPC2104 LPC2105 LPC2106 LPC2109 LPC2114 LPC2119 LPC2124 LPC2129 LPC2131 LPC2132 LPC2134 LPC2136 LPC2138 LPC2141 LPC2142 LPC2144 LPC2146 LPC2148 LPC2157 LPC2158 LPC2194 LPC2210 LPC2212 LPC2214 LPC2220 LPC2290 LPC2292 LPC2294 LPC2361 LPC2362 LPC2364 LPC2365 LPC2366 LPC2367 LPC2368 LPC2377 LPC2378 LPC2387 LPC2388 LPC2420 LPC2458 LPC2460 LPC2468 LPC2470 LPC2478 LPC288x LPC2880 LPC2888 LPC3100 LPC3130 LPC3131 LPC3141 LPC3143 LPC3152 LPC3154 LPC3200 LPC3180 LPC3220 LPC3230 LPC3240 LPC3250 LPC4300 LPC4310 LPC4320 LPC4330 LPC4350 LPC4353 LPC4357...
  • Серия ST STM32xxx:
    STM32F100V STM32F101 STM32F103 STM32F105 STM32F107RC STM32L151 STM32L152 STM32F205 STM32F207 STM32F215 STM32F217 STM32F405 STM32F407 STM32F415 STM32F417 STM32L151 STM32L152 STM32F101RE STM32F101RD STM32F205RC STM32F101VE STM32F101VD STM32F100RE STM32F103RE STM32F100VE STM32F100RD STM32F103RD STM32F100VD STM32F103VD STM32F100ZD STM32F205VC STM32F207VC STM32F205ZC STM32F105VC STM32F105RC STM32F101RC STM32F107RC STM32F101VC STM32F107VC STM32F101ZC STM32F100RC STM32F103RC STM32F100VC STM32F103VC STM32F100ZC STM32F205RB STM32L151CB STM32L152CB STM32L151RB STM32L152RB STM32F205VB STM32L15VB STM32F105VB STM32L152VB STM32F103ZC STM32F103TB STM32F101CB STM32F103CB STM32F101RB STM32F103RB STM32F101VB STM32F107VB STM32F101TB STM32F100CC STM32F102CB STM32F100RB STM32F102RB STM32F100VB STM32F103VB STM32L151C8 STM32L152C8 STM32F103C8 STM32F102C8 STM32L152C6 STM32F103C6 STM32F102C6 STM32F103C4 STM32F102C4 STM32L151R8 STM32F105R8 STM32F103T8 STM32F101T8 STM32F101C8 STM32F100C8 STM32L151C6 STM32F101R8 STM32F100R8 STM32L151R6 STM32F101R6 STM32F100R6 STM32F101R4 STM32F100R4 STM32F407VG STM32F417VG STM32F407ZG STM32F417ZG STM32F405RG STM32F415RG STM32F405VG STM32F415VG STM32F405ZG STM32F415ZG STM32F207VG STM32F217VG STM32F207ZG STM32F217ZG STM32F205RG STM32F215RG STM32F205VG STM32F215VG STM32F205ZG STM32F215ZG STM32F101RG STM32F103RG STM32F101VG STM32F103VG STM32F101ZG STM32F103ZG STM32F205RF STM32F101RF STM32F103RF STM32F205VF STM32F101VF STM32F407VE STM32F207VE STM32F207VF STM32F103VF STM32F417VE STM32F217VE STM32F215VE STM32F103VE STM32F205ZF STM32F101ZF STM32F407ZE STM32F207ZE STM32F205ZE STM32F101ZE STM32F100ZE STM32F101ZD STM32F103ZD STM32F207ZC STM32F207IC STM32F103VE STM32F207ZF STM32F103ZF STM32F417ZE STM32F217ZE STM32F215ZE STM32F407IE STM32F207IE STM32F417IE STM32F217IE STM32F207IF STM32F207IG STM32F217IG STM32F407IG STM32F417IG STM32F205RE STM32F215RE STM32F205VE ...

  • Список микропроцессорных ядер ARM
  • Ядра микропроцессоров ARM Holdings перечислены здесь, отсортированы по поколению и названию. ARM предоставляет сводку о многочисленных производителях, реализующих ядра ARM в своих разработках.[1] Keil также даёт несколько более новую сводку производителей процессоров на базе ARM.[2] ARM также предоставляет диаграмму[3], отображающую обзор линейки процессоров ARM с производительностью и функциональностью в сравнении с возможностями для более новых семейств ARM7, ARM9, ARM11, Cortex-M, Cortex-R и Cortex-A.

    Ядра микропроцессоров ARM[править | править код]Разработаны ARM[править | править код]Семейство ARM Архитектура ARM Ядро Особенности Кэш (I/D), MMU Типичная производительность MIPS @ МГц
    ARM1 ARMv1 ARM1 Первая реализация Нет
    ARM2 ARMv2 ARM2 ARMv2 добавил инструкцию MUL (умножение) Нет 4 MIPS @ 8 МГц
    0.33 DMIPS/МГц
    ARMv2a ARM250 Интегрированный MEMC (MMU), графический и вводно-выводной процессор. ARMv2a добавил инструкции SWP и SWPB (обмен). Нет, MEMC1a 7 MIPS @ 12 МГц
    ARM3 ARMv2a ARM3 Первая интегрированная кэш-память. 4 КБ унифицированный 12 MIPS @ 25 МГц
    0.50 DMIPS/МГц
    ARM6 ARMv3 ARM60 ARMv3 первая поддержка 32-разрядного адресного пространства (ранее 26-разрядное) Нет 10 MIPS @ 12 МГц
    ARM600 Как ARM60, кэш и шина сопроцессора (для модуля с плавающей запятой FPA10). 4 КБ унифицированный 28 MIPS @ 33 МГц
    ARM610 Как ARM60, кэш, без шины сопроцессора. 4 КБ унифицированный 17 MIPS @ 20 МГц
    0.65 DMIPS/МГц
    ARM7 ARMv3 ARM700 8 КБ унифицированный 40 МГц
    ARM710 Как ARM700, без шины сопроцессора. 8 КБ унифицированный 40 МГц
    ARM710a Как ARM710 8 КБ унифицированный 40 МГц
    0.68 DMIPS/МГц
    ARM7TDMI ARMv4T ARM7TDMI(-S) 3-ступенчатый конвейер, Thumb, нет 15 MIPS @ 16.8 МГц
    63 DMIPS @ 70 МГц
    ARM710T Как ARM7TDMI, кэш 8 КБ унифицированный, MMU 36 MIPS @ 40 МГц
    ARM720T Как ARM7TDMI, кэш 8 КБ унифицированный, MMU с расширением быстрого переключения контекста 60 MIPS @ 59.8 МГц
    ARM740T Как ARM7TDMI, кэш MPU
    ARM7EJ ARMv5TEJ ARM7EJ-S 5-ступенчатый конвейер, Thumb, Jazelle DBX, расширенные DSP-инструкции, нет
    ARM8 ARMv4 ARM810[4][5] 5-ступенчатый конвейер, статическое предсказание переходов, двойная пропускная способность памяти 8 КБ унифицированный, MMU 84 MIPS @ 72 МГц
    1.16 DMIPS/МГц
    ARM9TDMI ARMv4T ARM9TDMI 5-ступенчатый конвейер, Thumb, нет
    ARM920T Как ARM9TDMI, кэш 16 КБ/16 КБ, MMU с FCSE (Fast Context Switch Extension)[6] 200 MIPS @ 180 МГц
    ARM922T Как ARM9TDMI, кэши 8 КБ/8 КБ, MMU
    ARM940T Как ARM9TDMI, кэши 4 КБ/4 КБ, MPU
    ARM9E ARMv5TE ARM946E-S Thumb, расширенные DSP-инструкции, переменный кэш, тесно связанная память, MPU
    ARM966E-S Thumb, расширенные DSP-инструкции, без кэша, TCM
    ARM968E-S Как ARM966E-S, без кэша, TCM
    ARMv5TEJ ARM926EJ-S Thumb, Jazelle DBX, расширенные DSP-инструкции, переменный, TCM, MMU 220 MIPS @ 200 МГц
    ARMv5TE ARM996HS Бестактовый процессор, как ARM966E-S, без кэшей, TCM, MPU
    ARM10E ARMv5TE ARM1020E 6-ступенчатый конвейер, Thumb, расширенные DSP-инструкции, (VFP) 32 КБ/32 КБ, MMU
    ARM1022E Как ARM1020E 16 КБ/16 КБ, MMU
    ARMv5TEJ ARM1026EJ-S Thumb, Jazelle DBX, расширенные DSP-инструкции, (VFP) переменный, MMU или MPU
    ARM11 ARMv6 ARM1136J(F)-S[7] 8-ступенчатый конвейер, SIMD, Thumb, Jazelle DBX, (VFP), расширенные DSP-инструкции, переменный, MMU 740 @ 532–665 МГц (i.MX31 SoC), 400–528 МГц
    ARMv6T2 ARM1156T2(F)-S 8-ступенчатый конвейер, SIMD, Thumb-2, (VFP), расширенные DSP-инструкции, переменный, MPU
    ARMv6Z ARM1176JZ(F)-S Как ARM1136EJ(F)-S, переменный, MMU + TrustZone 965 DMIPS @ 772 МГц, до 2600 DMIPS с четырьмя процессорами[8]
    ARMv6K ARM11 MPCore Как ARM1136EJ(F)-S, 1–4 ядра SMP, переменный, MMU
    SecureCore ARMv6-M SC000 0.9 DMIPS/МГц
    ARMv4T SC100
    ARMv7-M SC300 1.25 DMIPS/МГц
    Cortex-M ARMv6-M Cortex-M0 [9] Профиль микроконтроллера, Thumb + подмножество Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] инструкция аппаратного умножения (опционально малая), опциональный системный таймер, опциональная бит-бэндинговая память, без кэша, без TCM, опциональный MPU с 8 областями 0.84 DMIPS/МГц
    Cortex-M0+ [11] Профиль микроконтроллера, Thumb + подмножество Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] инструкция аппаратного умножения (опционально малая), опциональный системный таймер, опциональная бит-бэндинговая память, без кэша, без TCM, опциональный MPU с 8 областями 0.93 DMIPS/МГц
    Cortex-M1 [12] Профиль микроконтроллера, Thumb + подмножество Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] инструкция аппаратного умножения (опционально малая), опция ОС добавляет SVC / банкированный указатель стека, опциональный системный таймер, без бит-бэндинга, без кэша, 0-1024 КБ I-TCM, 0-1024 КБ D-TCM, без MPU 136 DMIPS @ 170 МГц,[13] (0.8 DMIPS/МГц, зависит от ПЛИС)[14]
    ARMv7-M Cortex-M3 [15] Профиль микроконтроллера, Thumb / Thumb-2, инструкции аппаратного умножения и деления, опциональная бит-бэндинговая память, без кэша, без TCM, опциональный MPU с 8 областями 1.25 DMIPS/МГц
    ARMv7E-M Cortex-M4 [16] Профиль микроконтроллера, Thumb / Thumb-2 / DSP / опциональный FPv4 с одинарной точностью, инструкции аппаратного умножения и деления, опциональная бит-бэндинговая память, без кэша, без TCM, опциональный MPU с 8 областями 1.25 DMIPS/МГц
    Cortex-R ARMv7-R Cortex-R4 [17] Профиль реального времени, Thumb / Thumb-2 / DSP / опциональный VFPv3 FPU, аппаратное умножение и опциональное деление, опциональный контроль чётности и ECC для внутренних шин / кэша / TCM, 8-ступенчатый конвейер, двухъядерный, работающий в режиме lockstep с логикой отказоустойчивости 0-64 КБ / 0-64 КБ, 0-2 из 0-8 МБ TCM, опциональный MPU с 8/12 областями
    Cortex-R5 (MPCore) [18] Профиль реального времени, Thumb / Thumb-2 / DSP / опциональный VFPv3 FPU и точность, аппаратное умножение и опциональное деление, опциональный контроль чётности и ECC для внутренних шин / кэша / TCM, 8-ступенчатый конвейер, двухъядерный, работающий в режиме lockstep с логикой отказоустойчивости / опционально как 2 независимых ядра, низколатентный порт периферии (LLPP), порт когерентности ускорителя (ACP) [19] 0-64 КБ / 0-64 КБ, 0-2 из 0-8 МБ TCM, опциональный MPU с 12/16 областями
    Cortex-R7 (MPCore) [20] Профиль реального времени, Thumb / Thumb-2 / DSP / опциональный VFPv3 FPU и точность, аппаратное умножение и опциональное деление, опциональный контроль чётности и ECC для внутренних шин / кэша / TCM, 11-ступенчатый конвейер, двухъядерный, работающий в режиме lockstep с логикой отказоустойчивости / внеочередное выполнение / динамическая переименование регистров / опционально как 2 независимых ядра, низколатентный порт периферии (LLPP), ACP [19] 0-64 КБ / 0-64 КБ, ? из 0-128 КБ TCM, опциональный MPU с 16 областями
    Cortex-A ARMv7-A Cortex-A5 [21] Прикладной профиль, ARM / Thumb / Thumb-2 / DSP / SIMD / опциональный VFPv4-D16 FPU / опциональный NEON / Jazelle RCT и DBX, 1–4 ядра / опциональный MPCore, блок управления snoop (SCU), общий контроллер прерываний (GIC), порт когерентности ускорителя (ACP) 4-64 КБ / 4-64 КБ L1, MMU + TrustZone 1.57 DMIPS / МГц на ядро
    Cortex-A7 MPCore [22] Прикладной профиль, ARM / Thumb / Thumb-2 / DSP / VFPv4-D16 FPU / NEON / Jazelle RCT и DBX / аппаратная виртуализация, выполнение по порядку, суперскаляр, 1–4 ядра SMP, расширения больших физических адресов (LPAE), SCU, GIC, ACP, архитектура и набор функций идентичны A15, 8-10 ступеней конвейера, маломощный дизайн[23] 32 КБ / 32 КБ L1, 0-4 МБ L2, L1 и L2 с контролем чётности и ECC, MMU + TrustZone 1.9 DMIPS / МГц на ядро
    Cortex-A8 [24] Прикладной профиль, ARM / Thumb / Thumb-2 / VFPv3 FPU / NEON / Jazelle RCT и DAC, 13-ступенчатый суперскалярный конвейер 16-32 КБ / 16-32 КБ L1, 0-1 МБ L2 с опциональной ECC, MMU + TrustZone до 2000 (2.0 DMIPS/МГц при частоте от 600 МГц до более 1 ГГц)
    Cortex-A9 MPCore [25] Прикладной профиль, ARM / Thumb / Thumb-2 / DSP / опциональный VFPv3 FPU / опциональный NEON / Jazelle RCT и DBX, внеочередное спекулятивное выполнение, суперскаляр, 1–4 ядра SMP, SCU, GIC, ACP 16-64 КБ / 16-64 КБ L1, 0-8 МБ L2 с опциональным контролем чётности, MMU + TrustZone 2.5 DMIPS/МГц на ядро, 10 000 DMIPS @ 2 ГГц на производительностно-оптимизированном TSMC 40G (двухъядерный)
    ARM Cortex-A12 [26] Прикладной профиль, ARM / Thumb-2 / DSP / VFPv4 FPU / NEON / аппаратная виртуализация, внеочередное спекулятивное выполнение, суперскаляр, 1–4 ядра SMP, расширения больших физических адресов (LPAE), SCU, GIC, ACP 32-64 КБ / 32 КБ L1, 256 КБ-8 МБ L2 3.0 DMIPS / МГц на ядро
    Cortex-A15 MPCore [27] Прикладной профиль, ARM / Thumb / Thumb-2 / DSP / VFPv4 FPU / NEON / Jazelle RCT / аппаратная виртуализация, внеочередное спекулятивное выполнение, суперскаляр, 1–4 ядра SMP, LPAE, SCU, GIC, ACP, 15-24 ступени конвейера[23] 32 КБ / 32 КБ L1, 0-4 МБ L2, L1 и L2 с контролем чётности и ECC, MMU + TrustZone как минимум 3.5 DMIPS/МГц на ядро (до 4.01 DMIPS/МГц в зависимости от реализации).[28]
    Cortex-A50 ARMv8-A Cortex-A53[29] Прикладной профиль, AArch32 и AArch64, 1-4 ядра SMP, TrustZone, NEON advanced SIMD, VFPv4, аппаратная виртуализация, двухпоточность, конвейер по порядку 8~64 КБ/8~64 КБ L1 на ядро, 128 КБ~2 МБ L2 общий, 40-разрядные физические адреса 2.3 DMIPS/МГц
    Cortex-A57[30] Прикладной профиль, AArch32 и AArch64, 1-4 ядра SMP, TrustZone, NEON advanced SIMD, VFPv4, аппаратная виртуализация, многопоточность, глубокий внеочередной конвейер 48 КБ/32 КБ L1 на ядро, 512 КБ~2 МБ L2 общий, 44-разрядные физические адреса как минимум 4.1 DMIPS/МГц на ядро (до 4.76 DMIPS/МГц в зависимости от реализации).
    Семейство ARM Архитектура ARM Ядро Особенности Кэш (I/D), MMU Типичная производительность MIPS @ МГц

    Разработаны третьими сторонами[править | править код]Эти ядра реализуют набор команд ARM и были разработаны независимо компаниями, имеющими архитектурную лицензию от ARM.

    Семейство Архитектура ARM Ядро Особенности Кэш (I/D), MMU Типичная производительность MIPS @ МГц
    StrongARM ARMv4 SA-1 5-ступенчатый конвейер 16 КБ/8–16 КБ, MMU 133–206 МГц
    1.0 DMIPS/МГц
    Faraday[31] ARMv4 FA510 6-ступенчатый конвейер до 32 КБ / 32 КБ кэш, MPU 1.26 DMIPS/МГц
    100-200 МГц
    FA526 до 32 КБ / 32 КБ кэш, MMU 1.26 MIPS/МГц
    166-300 МГц
    FA626 8-ступенчатый конвейер 32 КБ/32 КБ кэш, MMU 1.35 DMIPS/МГц
    500 МГц
    ARMv5TE FA606TE 5-ступенчатый конвейер, без кэша, без MMU 1.22 DMIPS/МГц
    200 МГц
    FA626TE 8-ступенчатый конвейер 32 КБ/32 КБ кэш, MMU 1.43 MIPS/МГц
    800 МГц
    FMP626TE 8-ступенчатый конвейер, SMP 1.43 MIPS/МГц
    500 МГц
    FA726TE 13-ступенчатый конвейер, двухпоточность 2.4 DMIPS/МГц
    1000 МГц
    XScale ARMv5TE XScale 7-ступенчатый конвейер, Thumb, расширенные DSP-инструкции 32 КБ/32 КБ, MMU 133–400 МГц
    Bulverde Wireless MMX, Wireless SpeedStep добавлены 32 КБ/32 КБ, MMU 312–624 МГц
    Monahans[32] Wireless MMX2 добавлен 32 КБ/32 КБ (L1), опциональный L2 кэш до 512 КБ, MMU до 1.25 ГГц
    Sheeva ARMv5 Feroceon 5-8 ступеней конвейера, однопоточный 16 КБ / 16 КБ, MMU 600-2000 МГц
    Jolteon 5-8 ступеней конвейера, двухпоточный 32 КБ / 32 КБ, MMU
    PJ1 (Mohawk) 5-8 ступеней конвейера, однопоточный, Wireless MMX2 32 КБ / 32 КБ, MMU 1.46 DMIPS/МГц
    1.06 ГГц
    ARMv6/ARMv7-A PJ4 6-9 ступеней конвейера, двухпоточный, Wireless MMX2, SMP 32 КБ / 32 КБ, MMU 2.41 DMIPS/МГц
    1.6 ГГц
    Snapdragon ARMv7-A Scorpion [33] 1 или 2 ядра. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv3 FPU / NEON (128-бит) 256 КБ L2 на ядро 2.1 DMIPS / МГц на ядро
    Krait [33] 1, 2 или 4 ядра. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON (128-бит) 4 КБ / 4 КБ L0, 16 КБ / 16 КБ L1, 512 КБ L2 на ядро 3.3 DMIPS / МГц на ядро
    Apple Ax ARMv7-A Apple Swift [34] 2 ядра. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON L1: 32 кБ инструкций + 32 кБ данных, L2: 1 МБ 3.5 DMIPS / МГц на ядро
    X-Gene ARMv8-A X-Gene 64-бит, четырёхпоточный, SMP Кэш, MMU, Виртуализация 3 ГГц
    Denver ARMv8-A Parker 64-бит

    См. также[править | править код] Портал «Информатика»
    Портал «Электроника»
    Архитектура ARM
    Список применений ядер ARM
    Ссылки[править | править код]^ "Line Card" (PDF). 2003. Дата обращения: 2011-01-06.
    ^ ARM Ltd and ARM Germany GmbH. "Device Database". Keil. Дата обращения: 2011-01-06.
    ^ "Processors". ARM. 2011. Дата обращения: 2011-01-06.
    ^ ARM Holdings (1996-08-07), ARM810 – Dancing to the Beat of a Different Drum (PDF), Hot Chips .
    ^ "VLSI Technology Now Shipping ARM810". EE Times. August 26, 1996. Дата обращения: March 16, 2012.
    ^ Регистр 13, FCSE PID register ARM920T Technical Reference Manual
    ^ "ARM1136J(F)-S – ARM Processor". Arm.com. Дата обращения: 2009-04-18.
    ^ "ARM11 Processor Family". ARM. Дата обращения: 2010-12-13.
    ^ Cortex-M0 Specification Summary; ARM Holdings.
    ^ a b c Cortex-M0/M0+/M1 Instruction Set; ARM Holding.
    ^ Cortex-M0+ Specification Summary; ARM Holdings.
    ^ Cortex-M1 Specification Summary; ARM Holdings.
    ^ "ARM Extends Cortex Family with First Processor Optimized for FPGA", пресс-релиз ARM, 19 марта 2007. Дата обращения 11 апреля 2007.
    ^ "ARM Cortex-M1", веб-сайт продукта ARM. Дата обращения 11 апреля 2007.
    ^ Cortex-M3 Specification Summary; ARM Holdings.
    ^ Cortex-M4 Specification Summary; ARM Holdings.
    ^ Cortex-R4 Specification Summary; ARM Holdings.
    ^ Cortex-R5 Specification Summary; ARM Holdings.
    ^ a b Cortex-R5 & Cortex-R7 Press Release; ARM Holdings; 31 января 2011.
    ^ Cortex-R7 Specification Summary; ARM Holdings.
    ^ Cortex-A5 Specification Summary; ARM Holdings.
    ^ Cortex-A7 Specification Summary; ARM Holdings.
    ^ a b Deep inside ARM's new Intel killer; The Register; 20 октября 2011.
    ^ Cortex-A8 Specification Summary; ARM Holdings.
    ^ Cortex-A9 Specification Summary; ARM Holdings.
    ^ Cortex-A12 Summary; ARM Holdings.
    ^ Cortex-A15 Specification Summary; ARM Holdings.
    ^ Exclusive : ARM Cortex-A15 "40 Per Cent" Faster Than Cortex-A9 | ITProPortal.com
    ^ "Cortex-A53 Processor". ARM Holdings. Дата обращения: 2012-10-13.
    ^ "Cortex-A57 Processor". ARM Holdings. Дата обращения: 2012-10-13.
    ^ [1]
    ^ "3rd Generation Intel XScale Microarchitecture: Developer’s Manual". download.intel.com. Intel. May 2007. Дата обращения: 2 December 2010.
    ^ a b Qualcomm's New Snapdragon S4: MSM8960 & Krait Architecture Explored; Anandtech.
    ^ Lal Shimpi, Anand (September 15, 2012). "The iPhone 5's A6 SoC: Not A15 or A9, a Custom Apple Core Instead". AnandTech. Дата обращения: September 15, 2012.
    Дополнительная литература[править | править код]The Definitive Guide to the ARM Cortex-M0; 1st Edition; Joseph Yiu; Newnes; 552 pages; 2011; ISBN 978-0-12-385477-3. (Online Sample)
    The Definitive Guide to the ARM Cortex-M3; 2nd Edition; Joseph Yiu; Newnes; 480 pages; 2009; ISBN 978-1-85617-963-8. (Online Sample)

     

    [скрыть]п·о·рЧипы на базе ARM

    Архитектура ARM Список микропроцессорных ядер ARM

    Прикладные
    процессоры Cortex-A5 Actions ATM7025/7029 Qualcomm Snapdragon S4 Play/200 InfoTMIC iMAPx820/iMAPx15 Telechips TCC892x

    Cortex-A7 Allwinner A20/A31s/A31 HiSilicon K3V3 Leadcore LC1813 MediaTek MT6572/6589/6589T/6589M/8125/6599 Qualcomm Snapdragon 200/400 Samsung Exynos 5410

    Cortex-A8 Allwinner A10/A13/A10s Apple A4 Freescale i.MX5x Rockchip RK290x/RK291x Samsung Exynos 3110/S5PC110/S5PV210 Texas Instruments OMAP 3 ZiiLABS ZMS-08

    Cortex-A9 Amlogic AML8726 Apple A5/A5X Freescale i.MX6x HiSilicon K3V2/K3V2T/K3V2E MediaTek MT6575/6577 Nvidia Tegra 2/3/4i Nufront NuSmart 2816M/NS115/NS115M Renesas EMMA EV2 Rockchip RK292x/RK30xx/RK31xx Samsung Exynos 4 ST-Ericsson NovaThor Telechips TCC8803 Texas Instruments OMAP 4 VIA WonderMedia WM88x0/89x0 ZiiLABS ZMS-20, ZMS-40

    Cortex-A15 HiSilicon K3V3 MediaTek MT6599 Nvidia Tegra 4 Samsung Exynos 5 Texas Instruments OMAP 5

    Совместимые с ARMv7-A
    Apple A6/A6X (Swift) Qualcomm Snapdragon S1/S2/S3 (Scorpion) Qualcomm Snapdragon S4 Plus/S4 Pro (Krait) Qualcomm Snapdragon 600/800 (Krait 300/Krait 400) Marvell P4J


    Встраиваемые
    микроконтроллеры Cortex-M0 Energy Micro EFM32 Zero NXP LPC1100, LPC1200 STMicroelectronics STM32 F0

    Cortex-M0+ Freescale Kinetis L NXP LPC800

    Cortex-M1 Actel FPGAs Altera FPGAs Xilinx FPGAs

    Cortex-M3 Actel SmartFusion, SmartFusion 2 Atmel AT91SAM3 Cypress PSoC 5 Energy Micro EFM32 Tiny, Gecko, Leopard, Giant Fujitsu FM3 NXP LPC1300, LPC1700, LPC1800 Silicon Labs Precision32 STMicroelectronics STM32 F1, F2, L1, W Texas Instruments F28, LM3, TMS470, OMAP 4 Toshiba TX03

    Cortex-M4 Atmel AT91SAM4 Freescale Kinetis K Texas Instruments OMAP 5

    Cortex-M4F Energy Micro EFM32 Wonder Freescale Kinetis K Infineon XMC4000 NXP LPC4000, LPC4300 STMicroelectronics STM32 F3, F4 Texas Instruments LM4F


    Реального времени
    микроконтроллеры Cortex-R4F Texas Instruments RM4, TMS570

    Cortex-R5F Scaleo OLEA


    Классические
    процессоры ARM7 Atmel AT91SAM7, AT91CAP7, AT91M, AT91R NXP LPC2100, LPC2200, LPC2300, LPC2400, LH7 STMicroelectronics извлечение прошивки STR7

    Совместимые с ARMv4
    Digital Equipment Corporation StrongARM

    ARM9 Atmel AT91SAM9, AT91CAP9 Freescale i.MX1x, i.MX2x Rockchip RK27xx/RK28xx NXP LPC2900, LPC3100, LPC3200, LH7A ST-Ericsson Nomadik STn881x STMicroelectronics STR9 Texas Instruments OMAP 1, AM1x VIA WonderMedia WM8505/8650 ZiiLABS ZMS-05

    Совместимые с ARMv5
    Digital Equipment Corporation XScale Marvell Sheeva Feroceon Jolteon Mohawk

    ARM11 Broadcom BCM2835 (Raspberry Pi) Freescale i.MX3x Infotmic IMAPX210/220 Nvidia Tegra APX, 6xx Qualcomm MSM7000, Snapdragon S1 ST-Ericsson Nomadik STn882x Telechips TCC8902 TI OMAP 2 VIA WonderMedia WM87x0

    Совместимые с ARMv6
    Mindspeed Comcerto 1000 .

  • Дополнительная информация
  • Архитектура ARM лицензируется. Компании, которые являются текущими или бывшими лицензиатами ARM, включают Advanced Micro Devices, Inc.,[11] Alcatel-Lucent, Altera, Apple Inc., копирование микроконтроллеров ARM AppliedMicro, Atmel, BlackBerry (ранее Research In Motion), Broadcom, Cirrus Logic, CSR plc, Cypress Semiconductor, Digital Equipment Corporation, Ember, Energy Micro, Freescale (выделена из Motorola в 2004), Fujitsu, Fuzhou Rockchip, Huawei, Intel (через DEC), LG, Marvell Technology Group, Microsemi, Microsoft, NEC, Nintendo, Nuvoton, Nvidia, NXP (бывшая Philips Semiconductor), Oki, ON Semiconductor, Panasonic, Qualcomm, Renesas, Samsung, Sharp, Silicon Labs, Sony, ST-Ericsson, STMicroelectronics, Symbios Logic, Texas Instruments, Toshiba, Yamaha, Xilinx и ZiiLABS.

    ARM предлагает несколько проектов микропроцессорных ядер, включая ARM7, ARM9, ARM11, Cortex-A8, Cortex-A9 и Cortex-A15. Компании часто лицензируют эти проекты у ARM для производства и интеграции в свои собственные системы на кристалле (SoC) с другими компонентами, включая RAM, GPU или радиомодемы (для мобильных телефонов).

    Пакеты систем на кристалле, интегрирующие ядра ARM, включают первые три поколения Nvidia Tegra, семейство Quatro от CSR plc, Nova и NovaThor от ST-Ericsson, Precision32 MCU от Silicon Labs, продукты OMAP от Texas Instruments, Hummingbird и Exynos от Samsung, линейку Ax SoC от Apple и i.MX от Freescale.

    Компании также могут получить архитектурную лицензию ARM для проектирования собственных ядер CPU с использованием набора команд ARM. Отличные реализации архитектуры ARM лицензиатами включают Apple A6, AppliedMicro X-Gene, Qualcomm Snapdragon и Krait, StrongARM от DEC, XScale от Marvell (ранее Intel) и запланированный Project Denver от Nvidia.

    История[править | править код]Первоначально задуманная британской компанией Acorn Computers для использования в своих персональных компьютерах, первые продукты на базе ARM были модулями сопроцессора для серии компьютеров BBC Micro. После успеха с компьютером BBC Micro компания Acorn Computers рассматривала возможность перехода от относительно простого процессора MOS Technology 6502 к бизнес-рынкам, таким как тот, который вскоре был захвачен IBM PC, запущенным в 1981 году. План Acorn Business Computer (ABC) требовал нескольких вторых процессоров, работающих с платформой BBC Micro, но такие процессоры, как Motorola 68000 и National Semiconductor 32016, считались неподходящими, а 6502 был недостаточно мощным для пользовательского интерфейса на основе графики.[12]

    После тестирования всех доступных процессоров и обнаружения их недостатков Acorn решила, что ей нужна новая архитектура. Вдохновлённая научными статьями о проекте Berkeley RISC, Acorn рассмотрела возможность создания собственного процессора.[13] Посещение Western Design Center в Финиксе, где 6502 обновлялся фактически компанией из одного человека, показало инженерам Acorn Стиву Ферберу и Софи Уилсон, что им не нужны огромные ресурсы и современные исследовательские центры.[14]

    Уилсон разработала набор команд, написав симуляцию процессора на BBC Basic, работающую на BBC Micro со вторым процессором 6502. Это убедило инженеров Acorn, что они на правильном пути. Уилсон обратилась к генеральному директору Acorn Герману Хаузеру и запросила дополнительные ресурсы. После получения одобрения была собрана небольшая команда для реализации модели Уилсон в аппаратном обеспечении.


    Процессор Conexant ARM, используемый в основном в маршрутизаторахAcorn RISC Machine: ARM2[править | править код]Официальный проект Acorn RISC Machine начался в октябре 1983 года. VLSI Technology была выбрана в качестве «кремниевого партнёра», поскольку они были поставщиком ПЗУ и пользовательских микросхем для Acorn. Руководство проектом осуществляли Уилсон и Фербер, и он был сознательно реализован с аналогичной эффективностью, как и 6502.[15] Ключевой целью было достижение низкой задержки ввода-вывода (обработки прерываний), как у 6502. Архитектура доступа к памяти 6502 позволяла разработчикам создавать быстрые машины без использования дорогостоящего оборудования прямого доступа к памяти. VLSI произвела первый ARM-чип 26 апреля 1985 года — он заработал с первого раза и стал известен как ARM1 к апрелю 1985 года.[2] Первые производственные системы, названные ARM2, появились на следующий год.


    Второй процессор ARM1 для BBC MicroПервым практическим применением ARM стало использование в качестве второго процессора для BBC Micro, где он применялся для разработки программного обеспечения симуляции для завершения разработки вспомогательных чипов (VIDC, IOC, MEMC) и для ускорения САПР, используемой в разработке ARM2. Впоследствии Уилсон переписала BBC Basic на языке ассемблера ARM, и глубокие знания, полученные при проектировании набора команд, позволили сделать код очень плотным, что сделало ARM BBC Basic чрезвычайно хорошим тестом для любого эмулятора ARM. Первоначальная цель создания компьютера на базе ARM была достигнута в 1987 году с выпуском Acorn Archimedes.[16]

    В 1992 году Acorn снова получила премию Queen's Award for Technology за ARM.

    ARM2 имел 32-разрядную шину данных, 26-разрядное адресное пространство и 27 32-разрядных регистров. 8 бит из регистра программного счётчика были доступны для других целей; старшие 6 бит (доступные из-за 26-разрядного адресного пространства) служили флагами состояния, а младшие 2 бита (доступные, поскольку программный счётчик всегда был выровнен по слову) использовались для установки режимов. Хотя адресная шина была расширена до 32 бит в ARM6, программный код всё ещё должен был находиться в первых 64 мегабайтах памяти в режиме совместимости 26 бит из-за зарезервированных бит для флагов состояния.[17] ARM2 имел всего 30 000 транзисторов по сравнению с 68 000 у модели Motorola 68000, выпущенной на шесть лет раньше.[18] Во многом такая простота была достигнута за счёт отсутствия микрокода (который составляет около одной четверти-трети от 68000) и, как и у большинства процессоров того времени, отсутствия кэша. Эта простота обеспечила низкое энергопотребление, но лучшую производительность, чем Intel 80286. Преемник ARM3 был выпущен с кэшем 4 КБ, что ещё больше повысило производительность.[19]

    Apple, DEC, Intel, Marvell: ARM6, StrongARM, XScale[править | править код]В конце 1980-х Apple Computer и VLSI Technology начали сотрудничать с Acorn над новыми версиями ядра ARM. В 1990 году Acorn выделила команду разработчиков в новую компанию под названием Acorn RISC Machines Ltd., которая стала ARM Ltd, когда её материнская компания ARM Holdings plc вышла на Лондонскую фондовую биржу и NASDAQ в 1998 году.[20]

    Новая работа Apple-ARM в конечном итоге переросла в ARM6, впервые выпущенный в начале 1992 года. Apple использовала ARM6 на базе ARM 610 в качестве основы для своего персонального цифрового помощника Apple Newton. В 1994 году Acorn использовала ARM 610 в качестве основного центрального процессора (CPU) в своих компьютерах Risc PC. DEC лицензировала архитектуру ARM6 и создала StrongARM. При частоте 233 МГц этот CPU потреблял всего один ватт (новые версии потребляют значительно меньше). Эта работа позже была передана Intel в рамках урегулирования судебного разбирательства, и Intel воспользовалась возможностью, чтобы дополнить свою линейку i960 процессором StrongARM. Позже Intel разработала собственную высокопроизводительную реализацию под названием XScale, которую затем продала Marvell.

    Лицензирование[править | править код]Ядро ARM оставалось практически неизменным по размеру на протяжении всех этих изменений. ARM2 имел 30 000 транзисторов, ARM6 вырос только до 35 000. Основной бизнес ARM — продажа IP-ядер, которые лицензиаты используют для создания микроконтроллеров и процессоров на основе этих ядер. Первоначальный производитель объединяет ядро ARM с другими частями для создания полного CPU, который обычно можно производить на существующих полупроводниковых фабриках с низкой стоимостью и при этом обеспечивать значительную производительность. Наиболее успешной реализацией стало ядро ARM7TDMI с сотнями миллионов проданных экземпляров. Atmel была пионером в области встраиваемых систем на основе ARM7TDMI.

    Архитектуры ARM, используемые в смартфонах, персональных цифровых помощниках и других мобильных устройствах, варьируются от ARMv5, используемого в недорогих устройствах, до ARMv6 и Cortex A-Series (ARMv7) в современных высококлассных устройствах. ARMv7 включает аппаратный блок с плавающей запятой, обеспечивающий повышенную скорость по сравнению с программной эмуляцией.

    В 2009 году некоторые производители представили нетбуки на базе процессоров ARM, которые напрямую конкурировали с нетбуками на базе Intel Atom.[21] По оценкам аналитической фирмы IHS iSuppli, к 2015 году микросхемы ARM будут установлены в 23% всех ноутбуков.[22]

    Ядра ARM[править | править код]Основная статья: Список микропроцессорных ядер ARM
    Архитектура Семейство, разработанное ARM Holdings Семейство, разработанное третьими сторонами Профиль Cortex
    ARMv1 ARM1
    ARMv2 ARM2, ARM3 Amber
    ARMv3 ARM6, ARM7
    ARMv4 ARM7TDMI, ARM8, ARM9TDMI StrongARM, FA526
    ARMv5 ARM7EJ, ARM9E, ARM10E XScale, FA626TE, Feroceon, PJ1/Mohawk
    ARMv6 ARM11
    ARMv6-M ARM Cortex-M0, ARM Cortex-M0+, ARM Cortex-M1 Микроконтроллер
    ARMv7-M ARM Cortex-M3 Микроконтроллер
    ARMv7E-M ARM Cortex-M4 Микроконтроллер
    ARMv7-R ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7 Реального времени
    ARMv7-A ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8,
    ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15 Scorpion, Krait, PJ4/Sheeva, Swift Прикладной
    ARMv8-A ARM Cortex-A53, ARM Cortex-A57[23] X-Gene, Denver Прикладной

    Список производителей, реализующих ядра ARM в своих разработках, предоставлен ARM.[24]

    Примеры применений ядер ARM[править | править код]Основная статья: Список применений ядер ARM
    Ядра ARM используются во многих продуктах, особенно в КПК и смартфонах. Некоторые примеры вычислительных устройств: Microsoft Surface, Apple iPad и ASUS Eee Pad Transformer. Другие включают смартфон Apple iPhone, портативный медиаплеер iPod, цифровую камеру Canon PowerShot A470, портативную игровую консоль Nintendo DS и навигационную систему TomTom.

    В 2005 году ARM приняла участие в разработке компьютера Манчестерского университета SpiNNaker, который использовал ядра ARM для симуляции человеческого мозга.[25]

    Чипы ARM также используются в Raspberry Pi, BeagleBoard, BeagleBone, PandaBoard и других одноплатных компьютерах, поскольку они очень малы, недороги и потребляют очень мало энергии.

    Архитектура[править | править код] Этот раздел требует дополнительных источников для проверки. Пожалуйста, помогите улучшить эту статью, добавив ссылки на надёжные источники. Неподтверждённый материал может быть оспорен и удалён. (Март 2011)

    С 1995 года справочное руководство по архитектуре ARM является основным источником документации по архитектуре процессора ARM и набору команд, различая интерфейсы, которые должны поддерживать все процессоры ARM (такие как семантика команд), и детали реализации, которые могут различаться. Архитектура развивалась с течением времени, и начиная с серии ядер Cortex определены три «профиля»:

    «Прикладной» профиль: серия Cortex-A
    «Реального времени» профиль: серия Cortex-R
    «Микроконтроллерный» профиль: серия Cortex-M.
    Профили могут использовать подмножество архитектуры. Например, профиль ARMv6-M (используемый в Cortex M0 / M0+ / M1) является подмножеством профиля ARMv7-M, который поддерживает меньше инструкций.

    Режимы CPU[править | править код]Архитектура ARM определяет несколько режимов CPU в зависимости от архитектуры. В любой момент времени CPU может находиться только в одном режиме, но может переключаться между режимами из-за внешних событий (прерываний) или программно.[26]

    Режим пользователя
    Единственный непривилегированный режим.
    Режим быстрого прерывания
    Привилегированный режим, в который процессор переходит при приёме прерывания FIQ.
    Режим прерывания
    Привилегированный режим, в который процессор переходит при приёме прерывания IRQ.
    Режим супервизора (svc)
    Привилегированный режим, в который процессор переходит при сбросе или при выполнении инструкции SWI.
    Режим прерывания по ошибке
    Привилегированный режим, в который процессор переходит при возникновении исключения прерывания по ошибке выборки или данных.
    Неопределённый режим
    Привилегированный режим, в который процессор переходит при возникновении исключения неопределённой инструкции.
    Системный режим (ARMv4 и выше)
    Единственный привилегированный режим, в который не входят через исключение. В него можно войти только путём выполнения инструкции, явно записывающей биты режима в CPSR.
    Режим MON (только расширения безопасности)
    Режим монитора введён для поддержки расширения TrustZone в ядре ARM.
    Режим HYP (PL2 Mode) (ARMv7)
    Режим гипервизора / виртуализации в ядре ARM, введённый в последней версии архитектуры ARM-7v (по состоянию на 2012 год).[27]
    Набор команд[править | править код]Исходная реализация ARM была жёстко запрограммирована без микрокода, как и гораздо более простой 8-битный процессор 6502, использовавшийся в предыдущих микрокомпьютерах Acorn.

    Архитектура ARM включает следующие RISC-особенности:

    Архитектура загрузки/сохранения.
    Нет поддержки невыровненных обращений к памяти (хотя теперь поддерживается в ядрах ARMv6, с некоторыми исключениями, связанными с командами загрузки/сохранения нескольких слов).
    Единый набор из 16 × 32-битных регистров (включая программный счётчик, указатель стека и регистр связи).
    Фиксированная ширина инструкции 32 бита для упрощения декодирования и конвейеризации ценой уменьшения плотности кода. Позже набор инструкций Thumb увеличил плотность кода.
    В основном выполнение за один такт.
    Для компенсации более простой конструкции по сравнению с процессорами типа Intel 80286 и Motorola 68020 были использованы некоторые дополнительные возможности:

    Условное выполнение большинства инструкций, снижающее накладные расходы на переходы и компенсирующее отсутствие предсказателя переходов.
    Арифметические инструкции изменяют коды условий только по необходимости.
    32-битный циклический сдвигатель, который может использоваться без потери производительности с большинством арифметических инструкций и вычислений адресов.
    Мощные режимы адресации с индексацией.
    Регистр связи для быстрых вызовов функций без сохранения контекста.
    Простая, но быстрая подсистема прерываний с двумя уровнями приоритета и переключаемыми банками регистров.
    Арифметические инструкции[править | править код]ARM поддерживает инструкции сложения, вычитания и умножения. Инструкции целочисленного деления реализованы только в ядрах ARM на основе следующих архитектур:

    ARMv7-M и ARMv7E-M всегда включают инструкции деления.[28]
    ARMv7-R всегда включает инструкции деления в набор команд Thumb, но опционально в наборе команд ARM.[29]
    ARMv7-A опционально включает инструкции деления. Инструкции могут быть не реализованы, или реализованы только в наборе Thumb, или в обоих наборах, или если включены расширения виртуализации.[29]
    Регистры[править | править код]Регистры R0-R7 одинаковы для всех режимов CPU; они никогда не банкируются.

    R13 и R14 банкируются для всех привилегированных режимов CPU, кроме системного. То есть каждый режим, в который можно войти из-за исключения, имеет свои собственные R13 и R14. Эти регистры обычно содержат указатель стека и адрес возврата из вызовов функций соответственно.

    Регистры в режимах CPU usr sys svc abt und irq fiq
    R0
    R1
    R2
    R3
    R4
    R5
    R6
    R7
    R8 R8_fiq
    R9 R9_fiq
    R10 R10_fiq
    R11 R11_fiq
    R12 R12_fiq
    R13 R13_svc R13_abt R13_und R13_irq R13_fiq
    R14 R14_svc R14_abt R14_und R14_irq R14_fiq
    R15
    CPSR
    SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

    Псевдонимы:

    R13 также называют SP (указатель стека).
    R14 также называют LR (регистр связи).
    R15 также называют PC (программный счётчик).
    Условное выполнение[править | править код]Почти каждая инструкция ARM имеет функцию условного выполнения, называемую предикацией, которая реализована с помощью 4-битного селектора кода условия (предиката). Чтобы обеспечить безусловное выполнение, один из четырёхбитных кодов заставляет инструкцию выполняться всегда. В большинстве других архитектур CPU коды условий есть только у инструкций перехода.

    Хотя предикат занимает 4 из 32 бит в коде инструкции и, следовательно, значительно сокращает биты кодирования для смещений в инструкциях доступа к памяти, это позволяет избегать инструкций перехода при генерации кода для небольших операторов if. Помимо устранения самих инструкций перехода, это сохраняет конвейер выборки/декодирования/исполнения ценой только одного такта на пропущенную инструкцию.

    Стандартным примером условного выполнения является алгоритм Евклида на основе вычитания:

    На языке C цикл выглядит так:

    while (i != j)
    {
    if (i > j)
    {
    i -= j;
    }
    else
    {
    j -= i;
    }
    }

    В ассемблере ARM цикл выглядит так:

    loop: CMP Ri, Rj ; установить условие "NE" если (i != j),
    ; "GT" если (i > j),
    ; или "LT" если (i < j)
    SUBGT Ri, Ri, Rj ; если "GT" (Greater Than), i = i-j;
    SUBLT Rj, Rj, Ri ; если "LT" (Less Than), j = j-i;
    BNE loop ; если "NE" (Not Equal), то цикл

    что позволяет избежать переходов вокруг блоков then и else. Если Ri и Rj равны, то ни одна из инструкций SUB не будет выполнена, что устраняет необходимость в условном переходе для проверки while в начале цикла, например, если бы использовалось SUBLE (меньше или равно).

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

    Другие особенности[править | править код]Ещё одна особенность набора команд — возможность встраивать сдвиги и циклические сдвиги в инструкции «обработки данных» (арифметические, логические и перемещения между регистрами), так что, например, оператор C

    a += (j << 2);

    может быть представлен как однословная, однотактная инструкция:[30]

    ADD Ra, Ra, Rj, LSL #2

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

    Процессор ARM также имеет функции, редко встречающиеся в других RISC-архитектурах, такие как адресация относительно PC (действительно, на 32-битном[1] ARM PC является одним из 16 регистров) и режимы адресации с пред- и постинкрементом.

    Набор команд ARM со временем расширялся. Некоторые ранние процессоры ARM (до ARM7TDMI), например, не имеют инструкции для хранения двухбайтового значения.

    Конвейеры и другие вопросы реализации[править | править код]Реализации ARM7 и более ранние имеют трёхступенчатый конвейер; стадии — выборка, декодирование и выполнение. Более производительные конструкции, такие как ARM9, имеют более глубокие конвейеры: Cortex-A8 имеет тринадцать стадий. Дополнительные изменения реализации для повышения производительности включают более быстрый сумматор и более развитую логику предсказания переходов. Разница между ядрами ARM7DI и ARM7DMI, например, заключалась в улучшенном умножителе; отсюда добавленная «M».

    Сопроцессоры[править | править код]Архитектура ARM предоставляет неинтрузивный способ расширения набора команд с помощью «сопроцессоров», к которым можно обращаться с помощью инструкций MCR, MRC, MRRC, MCRR и подобных. Пространство сопроцессоров логически разделено на 16 сопроцессоров с номерами от 0 до 15, при этом сопроцессор 15 (cp15) зарезервирован для некоторых типичных управляющих функций, таких как управление кэшами и работой MMU в процессорах, которые имеют его.

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

    В других случаях разработчики чипов интегрируют аппаратное обеспечение только через механизм сопроцессоров. Например, механизм обработки изображений может представлять собой небольшое ядро ARM7TDMI, объединённое с сопроцессором, имеющим специализированные операции для поддержки определённого набора примитивов транскодирования HDTV.

    Отладка[править | править код] Этот раздел требует дополнительных источников для проверки. Пожалуйста, помогите улучшить эту статью, добавив ссылки на надёжные источники. Неподтверждённый материал может быть оспорен и удалён. (Март 2011)

    Все современные процессоры ARM включают аппаратные средства отладки, позволяющие программным отладчикам выполнять такие операции, как останов, пошаговое выполнение и установка точек останова в коде, начиная со сброса. Эти средства реализованы с использованием поддержки JTAG, хотя некоторые новые ядра опционально поддерживают собственный двухпроводной протокол ARM «SWD». В ядрах ARM7TDMI «D» обозначала поддержку отладки JTAG, а «I» — наличие модуля отладки «EmbeddedICE». Для поколений ядер ARM7 и ARM9 EmbeddedICE поверх JTAG был стандартом де-факто, хотя это не было архитектурно гарантировано.

    Архитектура ARMv7 определяет базовые средства отладки на архитектурном уровне. Они включают точки останова, точки наблюдения и выполнение инструкций в «режиме отладки»; аналогичные возможности были доступны и в EmbeddedICE. Поддерживается как отладка в «режиме останова», так и в «режиме монитора». Фактический транспортный механизм, используемый для доступа к средствам отладки, архитектурно не определён, но реализации обычно включают поддержку JTAG.

    Существует отдельная архитектура отладки ARM «CoreSight», которая архитектурно не требуется для процессоров ARMv7.

    Инструменты[править | править код]Архитектура ARM поддерживается набором средств разработки, таких как Emprog ThunderBench для ARM. Эти инструменты позволяют инженерам-разработчикам программировать устройства на архитектуре ARM на языке высокого уровня, таком как C.[31]

    Расширения DSP[править | править код]Для улучшения архитектуры ARM для цифровой обработки сигналов и мультимедийных приложений в набор были добавлены DSP-инструкции.[32] Они обозначаются буквой «E» в названиях архитектур ARMv5TE и ARMv5TEJ. Варианты E также подразумевают T, D, M и I.

    Новые инструкции распространены в архитектурах цифровых сигнальных процессоров. Они включают варианты умножения с накоплением со знаком, насыщенное сложение и вычитание, а также подсчёт ведущих нулей.

    SIMD-расширения для мультимедиа[править | править код]Введены в архитектуре ARMv6.[33]

    Jazelle[править | править код]Основная статья: Jazelle
    Jazelle DBX (Direct Bytecode eXecution) — это технология, позволяющая выполнять байт-код Java непосредственно в архитектуре ARM в качестве третьего состояния выполнения (и набора команд) наряду с существующими режимами ARM и Thumb. Поддержка этого состояния обозначается буквой «J» в архитектуре ARMv5TEJ и в названиях ядер ARM9EJ-S и ARM7EJ-S. Поддержка этого состояния требуется начиная с ARMv6 (кроме профиля ARMv7-M), хотя новые ядра включают только тривиальную реализацию, не обеспечивающую аппаратного ускорения.

    Thumb[править | править код] Этот раздел требует дополнительных источников для проверки. Пожалуйста, помогите улучшить эту статью, добавив ссылки на надёжные источники. Неподтверждённый материал может быть оспорен и удалён. (Март 2011)

    Для улучшения плотности скомпилированного кода процессоры, начиная с ARM7TDMI (выпущенного в 1994 году[34]), получили набор инструкций Thumb, имеющий собственное состояние. («T» в «TDMI» указывает на наличие Thumb.) В этом состоянии процессор выполняет набор инструкций Thumb — компактное 16-битное кодирование для подмножества набора команд ARM.[35] Большинство инструкций Thumb напрямую отображаются в обычные инструкции ARM. Экономия пространства достигается за счёт того, что некоторые операнды инструкций становятся неявными, а количество возможностей ограничивается по сравнению с инструкциями ARM, выполняемыми в состоянии набора команд ARM.

    В Thumb 16-битные коды операций имеют меньшую функциональность. Например, только переходы могут быть условными, и многие коды операций ограничены доступом только к половине всех регистров общего назначения CPU. Более короткие коды операций обеспечивают улучшенную плотность кода в целом, даже если некоторые операции требуют дополнительных инструкций. В ситуациях, когда ширина порта памяти или шины ограничена менее чем 32 битами, более короткие коды Thumb позволяют повысить производительность по сравнению с 32-битным кодом ARM, так как меньше программного кода может быть загружено в процессор через ограниченную пропускную способность памяти.

    Встраиваемое оборудование, такое как Game Boy Advance, обычно имеет небольшой объём RAM с полным 32-битным доступом; большая часть доступна через 16-битную или более узкую вторичную шину данных. В этой ситуации обычно имеет смысл компилировать код Thumb и вручную оптимизировать несколько наиболее интенсивных по CPU участков с использованием полных 32-битных инструкций ARM, размещая эти более широкие инструкции в памяти с доступом по 32-битной шине.

    Первым процессором с декодером инструкций Thumb стал ARM7TDMI. Все семейства ARM9 и более поздние, включая XScale, включают декодер Thumb.

    Thumb-2[править | править код]Технология Thumb-2 была представлена в ядре ARM1156, анонсированном в 2003 году. Thumb-2 расширяет ограниченный 16-битный набор инструкций Thumb дополнительными 32-битными инструкциями, придавая набору большую широту, что приводит к набору инструкций переменной длины. Заявленной целью Thumb-2 было достижение плотности кода, аналогичной Thumb, с производительностью, аналогичной набору команд ARM на 32-битной памяти. В ARMv7 можно сказать, что эта цель была достигнута.[citation needed]

    Thumb-2 расширяет как наборы ARM, так и Thumb, добавляя операции с битовыми полями, табличные переходы и условное выполнение. Новый «Унифицированный язык ассемблера» (UAL) поддерживает генерацию как инструкций Thumb-2, так и ARM из одного исходного кода; версии Thumb, используемые в процессорах ARMv7, по существу так же функциональны, как и код ARM (включая возможность писать обработчики прерываний). Это требует некоторой осторожности и использования новой инструкции «IT» (if-then), которая позволяет выполнять до четырёх последовательных инструкций на основе проверенного условия. При компиляции в код ARM это игнорируется, но при компиляции в Thumb-2 генерирует фактическую инструкцию. Например:

    ; if (r0 == r1)
    CMP r0, r1
    ITE EQ ; ARM: нет кода ... Thumb: инструкция IT
    ; then r0 = r2;
    MOVEQ r0, r2 ; ARM: условно; Thumb: условие через ITE 'T' (then)
    ; else r0 = r3;
    MOVNE r0, r3 ; ARM: условно; Thumb: условие через ITE 'E' (else)
    ; напомним, что инструкция MOV в Thumb не имеет битов для кодирования "EQ" или "NE"

    Все чипы ARMv7 поддерживают набор инструкций Thumb-2. Другие чипы в сериях Cortex и ARM11 поддерживают как «состояние набора инструкций ARM», так и «состояние набора инструкций Thumb-2».[36][37][38]

    Также известный как Thumb-2EE и коммерчески брендированный как Jazelle RCT (Runtime Compilation Target), технология ThumbEE была официально представлена в 2005 году и дебютировала в процессорном ядре ARM Cortex-A8. Функционируя как четвёртое отдельное состояние работы процессоров ARM, ThumbEE вносит целевые модификации в существующий набор инструкций переменной длины Thumb-2. Эти архитектурные изменения оптимизируют конвейер инструкций специально для динамически генерируемого машинного кода, производимого JIT-компиляторами в средах управляемого выполнения. Предназначенная в качестве цели выполнения для высокоуровневых интерпретируемых языков или языков, работающих на виртуальных машинах, включая Java, C#, Perl и Python, ThumbEE позволяет JIT-компиляции генерировать более плотный двоичный код без потери производительности. ThumbEE включает несколько уникальных аппаратных возможностей для облегчения выполнения управляемого кода. Она обеспечивает автоматическую проверку нулевых указателей для всех операций загрузки и сохранения памяти, включает специальный код операции для проверки границ массивов во время выполнения, предоставляет прямой доступ к банку регистров r8–r15, который также хранит состояние виртуальной машины Java Jazelle/DBX, и вводит специальные инструкции перехода для вызова предопределённых обработчиков времени выполнения.[39] Обработчики — это компактные, часто вызываемые фрагменты кода, реализующие основную логику выполнения высокоуровневых языков, такую как динамическое выделение памяти для новых объектов. Все эти возможности реализованы путём переназначения небольшого набора неиспользуемых кодов операций Thumb-2, при этом выполнение контролируется активным состоянием режима ThumbEE. Устаревание ThumbEE 23 ноября 2011 года ARM официально объявила об устаревании использования архитектуры набора команд ThumbEE для всех разработчиков.[40] Это устаревание устранило нативную аппаратную акселерацию Jazelle, что означает, что современные процессорные ядра больше не обеспечивают выделенное аппаратное ускорение для выполнения байт-кода Java. После этого изменения состояние ThumbEE сохраняется только в микpоархитектурах CPU для поддержания обратной совместимости с устаревшими двоичными файлами, содержащими инструкции ThumbEE. Кроме того, инструкция BXJ (переход и обмен на Jazelle) была переопределена для работы идентично стандартной инструкции BX во всех современных операционных контекстах.[41] Расширение с плавающей запятой (VFP) С мая 2013 года было предложено объединить статью ARMhf в этот раздел для единой документации. (Обсуждение открыто) Vector Floating-Point (VFP) — это специализированное расширение сопроцессора с плавающей запятой, добавляемое к базовой архитектуре ARM. Оно обеспечивает недорогие вычисления с плавающей запятой одинарной и двойной точности, полностью совместимые со стандартом ANSI/IEEE 754-1985. Аппаратное ускорение VFP служит широкому спектру встраиваемых применений, включая персональные цифровые помощники, смартфоны, кодирование и декодирование звука, 3D-графику, цифровую обработку звука, печатные устройства, телевизионные приставки и автомобильные системы управления. Ранние версии VFP поддерживали ограниченный режим векторного выполнения, предназначенный для параллельной обработки данных; однако этот режим обрабатывал векторные элементы последовательно, а не параллельно, не обеспечивая преимуществ истинных SIMD-вычислений. В результате эта функция векторного выполнения была удалена вскоре после выпуска,[42] уступив место более мощному механизму NEON Advanced SIMD. Некоторые ядра ARM, такие как Cortex-A8, интегрируют модуль VFPLite с пониженной производительностью вместо полного VFP. VFPLite требует примерно в десять раз больше тактов для выполнения эквивалентных вычислений с плавающей запятой по сравнению с полнофункциональным VFP.[43] Исторически процессоры ARM включали альтернативные варианты сопроцессоров с плавающей запятой и SIMD, такие как FPA, FPE и iwMMXt. Хотя эти модули предоставляют перекрывающуюся математическую функциональность с VFP, они используют несовместимые кодировки операций и не могут выполнять двоичные файлы VFP. Было выпущено несколько версий VFP на протяжении поколений ARM: - VFPv1: Полностью устаревшая и более не поддерживаемая в современных ядрах. - VFPv2: Опциональное расширение набора инструкций для архитектур ARMv5TE, ARMv5TEJ и ARMv6. - VFPv3-D32: Обратно совместима с VFPv2, добавляет работу FPU без учёта исключений, набор из тридцати двух 64-битных регистров с плавающей запятой по умолчанию, инструкции преобразования скаляр-float-double (VCVT) и поддержку немедленных значений для передач данных через VMOV. - VFPv3-D16: Эквивалентна VFPv3-D32 по функциям, но ограничена шестнадцатью 64-битными регистрами FPU для уменьшения площади кристалла. - VFPv3-F16: Редкий вариант, добавляющий аппаратную поддержку 16-битных вычислений с плавающей запятой половинной точности по стандарту IEEE 754-2008. - VFPv4: Интегрирована в ядро Cortex-A5, добавляет инструкции слитного умножения-сложения (FMA) для более эффективных численных расчётов. Advanced SIMD (NEON) Расширение Advanced SIMD, коммерчески известное как NEON, также называемое Media Processing Engine (MPE), представляет собой комбинированный 64- и 128-битный набор SIMD-инструкций, разработанный для обеспечения стандартизированного аппаратного ускорения обработки мультимедиа, анализа сигналов и цифровых вычислений. NEON входит в стандартную комплектацию всех процессоров Cortex-A8 и реализован как опциональная функция для серии Cortex-A9.[44] Механизм обеспечивает чрезвычайно маломощную обработку мультимедиа: он может полностью декодировать MP3-потоки на частоте CPU всего 10 МГц и выполнять GSM AMR-кодеки на частоте до 13 МГц. NEON имеет полный специализированный набор инструкций, независимые регистровые файлы и отдельные конвейеры выполнения, отделённые от основного целочисленного ядра.[45] Это расширение поддерживает 8-, 16-, 32- и 64-битные целочисленные данные, а также 32-битные числа с плавающей запятой одинарной точности, обеспечивая ускорение SIMD-операций для декодирования звука, кодирования/декодирования видео, 2D/3D-графики и игровых нагрузок. NEON может обрабатывать до 16 независимых элементов данных за одну инструкцию. Его регистровый файл физически разделён с VFP для оптимизации использования кремния. Хотя Cortex-A8 и Cortex-A9 имеют 128-битные векторные регистры, они обрабатывают 128-битные векторы в два последовательных 64-битных прохода.[43] Напротив, новое поколение Cortex-A15 поддерживает полное 128-битное параллельное выполнение за один такт. Расширения безопасности (TrustZone) Продаваемые под названием TrustZone Technology, расширения безопасности ARM были впервые представлены в прикладной архитектуре ARMv6KZ и всех последующих поколениях процессоров. Технология предлагает экономичную альтернативу интеграции отдельного выделенного ядра безопасности в систему на кристалле. Она обеспечивает изоляцию путём разделения одного физического ядра CPU на два аппаратно-обеспеченных виртуальных домена выполнения, официально называемых «мирами» во избежание конфликтов с другими терминами привилегий. Процессор может переключаться между безопасным и небезопасным (нормальным) мирами под аппаратным контролем доступа, предотвращая утечку конфиденциальных данных и защищённого программного кода из безопасного домена с более высокими привилегиями в недоверенный домен. Этот механизм переключения работает ортогонально всем другим функциям CPU, позволяя обоим доменам работать независимо на одном физическом процессоре. Контроллеры памяти и периферийные интерфейсы полностью осведомлены о текущем состоянии мира, что обеспечивает детальный аппаратный контроль доступа к криптографическим секретам, защищённым прошивкам и аутентифицированному исполняемому коду. Типичное развёртывание TrustZone запускает полнофункциональную операционную систему, такую как Android или Linux, в небезопасном мире, а критичная к безопасности прошивка выполняется в безопасном мире. Эта прошивка основана на оптимизированных для TrustZone версиях Trusted Foundations Software, разработанных Trusted Logic Mobility. Архитектура обеспечивает надёжное управление цифровыми правами для защиты медиаконтента на устройствах ARM и аппаратные ограничения для блокировки несанкционированного вмешательства.[46] Trusted Foundations Software позже была приобретена Gemalto, а конкурент Giesecke & Devrient разработал альтернативную среду безопасного выполнения под названием Mobicore. В апреле 2012 года ARM, Gemalto и Giesecke & Devrient объединили свои активы TrustZone в совместное предприятие Trustonic.[47][48] Кроме того, Open Virtualization предоставляет эталонную реализацию безопасного мира TrustZone с открытым исходным кодом для исследовательских целей.[49] Важно отметить, что детали низкоуровневой проприетарной реализации TrustZone не были полностью опубликованы для независимого аудита безопасности. Таким образом, точный уровень безопасности против конкретных угроз остаётся трудно измеримым для сторонних исследователей. Защита страниц памяти No-Execute Начиная с архитектуры ARMv6, процессоры ARM поддерживают аппаратные разрешения страниц памяти, известные как XN (eXecute Never). Эта защита помечает определённые области памяти как неисполняемые, предотвращая выполнение вредоносного или нежелательного кода из сегментов данных и смягчая распространённые векторы атак на повреждение памяти.[50] ARMv8 и 64-битная архитектура Выпущенная в конце 2011 года архитектура ARMv8 ввела фундаментальную переработку проектов процессоров ARM. Она представляет нативное 64-битное состояние выполнения, названное AArch64, и новый 64-битный набор инструкций A64. В спецификации ARMv8 устаревшая 32-битная экосистема формально обозначена как AArch32 для состояния процессора и A32 для классического 32-битного набора инструкций. Набор инструкций переменной длины Thumb переименован в T32 и не имеет нативного 64-битного эквивалента. ARMv8 позволяет два гибридных режима работы: 32-битные пользовательские приложения могут выполняться на полноценной 64-битной операционной системе, а 32-битная ОС может быть виртуализирована и управляться 64-битным гипервизором.[1] Многие производители полупроводников, включая Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung и STMicroelectronics, объявили о дорожных картах продуктов на базе ARMv8 после выпуска архитектуры.[51][52][53][54] ARM официально представила свои первые два прикладных ядра ARMv8-A, Cortex-A53 и Cortex-A57, 30 октября 2012 года.[23] В обоих состояниях AArch32 и AArch64 ARMv8 делает блоки с плавающей запятой VFPv3/VFPv4 и расширения NEON Advanced SIMD обязательными, а не опциональными. Архитектура также вводит специализированные инструкции аппаратного ускорения криптографии, обеспечивающие аппаратное ускорение для алгоритмов AES и хэшей SHA-1/SHA-256, повышая нативную безопасность для современных зашифрованных встраиваемых и серверных систем.

    Особенности AArch64:

    Новый набор команд A64
    Имеет 31 64-битный регистр общего назначения.
    Отдельные выделенные SP и PC.
    Инструкции по-прежнему 32-битные и в основном такие же, как A32 (с удалением большинства инструкций LDM/STM и условного выполнения).
    Большинство инструкций могут принимать 32-битные или 64-битные аргументы.
    Адреса считаются 64-битными.
    Advanced SIMD (NEON) улучшен
    Имеет 32 × 128-битных регистра (вместо 16), также доступных через VFPv4.
    Поддерживает арифметику двойной точности.
    Полностью совместим с IEEE 754.
    Инструкции шифрования AES и хэширования SHA-1/SHA-2 также используют эти регистры.
    Новая система исключений
    Меньше банкированных регистров и режимов.
    Трансляция памяти из 48-битных виртуальных адресов на основе существующего LPAE, который был спроектирован для лёгкого расширения до 64 бит.
    Поддержка ОС:

    Лицензирование архитектуры ARM, поддержка ядра и коммерческая экосистема (переписано) Патчи ядра Linux, вносящие официальную поддержку ARMv8, были представлены для общественного обозрения Каталином Маринасом, инженером-программистом, работающим в ARM Ltd. Эти патчи были официально объединены и интегрированы в основную ветку ядра Linux с выпуском версии 3.7 в конце 2012 года.[55] Лицензиаты ARM Этот раздел требует дополнительных независимых источников для проверки. Читателям и редакторам рекомендуется дополнять ссылки на надёжные источники. Утверждения без подтверждения источником могут быть оспорены и удалены. (Март 2011) На фотографии показан кристалл микроконтроллера STM32F103VGT6, построенного на ядре ARM Cortex-M3. Это устройство имеет 1 мегабайт встроенной flash-памяти, центральный процессор с частотой 72 МГц и встроенную периферию для управления двигателями, интерфейсами USB и CAN. Компонент производится компанией STMicroelectronics. Примечательно, что ARM Ltd работает как бесфабричная компания по интеллектуальной собственности и не производит и не продаёт физические чипы CPU или конечные устройства на основе своих архитектур. Вместо этого компания в основном монетизирует свои процессорные проекты, лицензируя архитектуру ARM и интеллектуальную собственность ядер квалифицированным сторонним партнёрам по всему миру. ARM предлагает гибкие лицензионные соглашения с различными структурами затрат и объёмами поставок, адаптированными для разных сценариев клиентов. Для всех лицензиатов ARM предоставляет интегрируемые аппаратные описания стандартных ядер ARM, полный набор средств разработки, включая компиляторы, отладчики и SDK, а также право на производство и продажу готовых полупроводниковых кристаллов со встроенными ядрами ARM. Бесфабричные компании-разработчики чипов, интегрирующие ядра ARM в свои пользовательские SoC, обычно ищут предварительно проверенные, готовые к производству IP-ядра, требующие минимальных изменений. Для таких клиентов ARM поставляет нетлисты на уровне вентилей выбранного ядра, а также абстрактные симуляционные модели и стандартные тестовые программы для упрощения интеграции и верификации. Более продвинутые клиенты, такие как производители интегральных схем и коммерческие фабрики, часто выбирают полностью синтезируемый RTL-код на Verilog. Наличие синтезируемого RTL-кода позволяет лицензиатам проводить глубокую архитектурную оптимизацию, функциональные модификации и расширения набора команд на этапе проектирования. Это позволяет добиваться специальных целей производительности, недостижимых с использованием неизменных фабричных нетлистов, таких как сверхвысокие тактовые частоты, сверхнизкое энергопотребление для встраиваемых устройств и пользовательские расширения для ускорения специализированных задач. Хотя условия лицензии ARM запрещают партнёрам перепродавать саму архитектуру ARM или IP-процессора третьим лицам, лицензиаты сохраняют полные права на распространение готовых аппаратных продуктов, содержащих ядра ARM, включая отдельные чипы, оценочные платы и готовые встраиваемые системы. Коммерческие литейные фабрики представляют собой особую категорию держателей лицензий ARM. Помимо права на продажу готовых кремниевых пластин и чипов с интегрированными ядрами ARM, эти фабрики обычно имеют привилегию перенастраивать и перепроизводствлять ядра ARM по заказу своих внешних клиентов. Модель ценообразования ARM основана на воспринимаемой технической ценности и рыночном позиционировании каждого портфеля ядер. Как правило, начальные и менее производительные ядра имеют более низкие лицензионные сборы по сравнению с высокопроизводительными. С точки зрения реализации, синтезируемые RTL-ядра стоят дороже, чем предварительно скомпилированные макро-ядра с фиксированной топологией. Общая стоимость усложняется, когда литейные фабрики владеют оптовыми лицензиями ARM. Крупные фабрики, такие как Samsung и Fujitsu, могут предлагать субсидированные IP-затраты своим внутренним заказчикам. В этой модели разработчики чипов, получающие ядра через услуги проектирования фабрики, могут снизить или полностью отказаться от стандартных лицензионных сборов. Однако это имеет компромиссы: Fujitsu и Samsung берут в два-три раза больше за пластину по сравнению с чистыми литейными фабриками, такими как TSMC и UMC.[citation needed] Для приложений с низкими и средними объёмами фабрики с услугами проектирования обеспечивают более низкие общие затраты благодаря субсидированию лицензионных сборов ARM. Для массовых продуктов долгосрочная экономия от более низкой стоимости пластин перевешивает разовые лицензионные сборы, что делает специализированные литейные фабрики более экономически эффективным вариантом. Множество компаний-производителей полупроводников и разработчиков интегральных схем имеют активные лицензии ARM. Среди них Analog Devices, компании, предоставляющие услуги сканирующей электронной микроскопии, AppliedMicro, Atmel, Broadcom, Cirrus Logic, Energy Micro, Faraday Technology, Freescale Semiconductor, Fujitsu, Intel (через соглашение с DEC), IBM, Infineon Technologies (разработчик семейства Infineon XMC4000), Marvell Technology Group, MediaTek, Nintendo, Nvidia, NXP Semiconductors, OKI, Qualcomm, Samsung, Sharp, STMicroelectronics и Texas Instruments, а также десятки других игроков отрасли. Архитектурная лицензия ARM Архитектурная лицензия ARM принципиально отличается от обычной лицензии на ядро как по стоимости, так и по техническому барьеру. Архитектурное лицензирование требует значительно более высоких финансовых вложений и обширных инженерных ресурсов, так как лицензиаты получают право проектировать полностью пользовательские микроархитектуры CPU, совместимые с официальной архитектурой набора команд ARM, а не просто интегрировать готовые ядра. Из-за высоких технических и капитальных требований лишь немногие компании имеют такую лицензию, включая Intel (полученную через соглашение с DEC), Marvell, Qualcomm и Broadcom.[56] Примерная стоимость лицензирования В годовом отчёте ARM за 2006 год сообщалось, что компания получила £88,7 млн роялти от поставок 2,45 млрд полупроводниковых устройств на базе ARM.[57] Это соответствует среднему роялти в £0,036 за устройство. Среднее значение охватывает все поколения ядер — от дорогих современных до недорогих устаревших. В том же году ARM получила £65,2 млн прямых лицензионных доходов от сделок по IP-ядрам,[58] с общим количеством 65 новых лицензионных контрактов.[59] Это даёт среднюю стоимость лицензии около £1 млн за ядро, опять же с учётом всех типов. Исходя из структуры доходов за 2006 год, около 60% доходов от процессоров составляли роялти, а 40% — лицензионные сборы. В сумме средний доход на готовое устройство составил примерно £0,06. Важно отметить, что разовые лицензионные сборы связаны в основном с новыми технологиями, тогда как массовые поставки — с устоявшимися ядрами, поэтому средние цифры не отражают точные затраты для конкретного продукта.

Общие вопросы об извлечении прошивок микроконтроллеров


  • Безопасно ли отправлять оплату в MikaTech?

    Если бы MikaTech была недобросовестной компанией, в интернете за 28 лет истории можно было бы найти массу негативных отзывов о её услугах

    Итак, ответ: ДА! Мы — хорошие люди.

    Почему выбирают Mikatech, нажмите здесь, чтобы узнать


  • Может ли Mikatech взломать микросхемы, не указанные на этом сайте?

    У разных производителей чипов разные номера деталей, но внутреннее ядро может быть выполнено по одной технологии. Было бы невозможно перечислить все номера деталей, к которым применима наша технология, такие как MYSON, STK, FEELING, ANALOG, FUJITSU, NOVATEK, LG/HYNDAI.

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

  • Будет ли защищена моя конфиденциальность?

    Mikatech Innovative Limited понимает важность конфиденциальности своих клиентов. В момент вашего обращения к Mikatech ваша личная информация будет защищена в соответствии с нашими внутренними регламентами, разработанными за годы практики. Mikatech использует эти данные для индивидуализации обслуживания и никогда не раскрывает их третьим лицам по каким-либо причинам.
    По каждому проекту мы удаляем все данные, материалы и коды через 60 дней после передачи файлов — это защищает нас и вашу конфиденциальность.

  • Законно ли пользоваться услугами Mikatech?

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


  • Извлечение прошивки и защита для микроконтроллеров на архитектуре ARM

    Микроконтроллеры на базе ARM доминируют в современной встраиваемой инфраструктуре благодаря своей маломощной RISC-архитектуре, гибкой интеграции периферии и масштабируемым ядрам Cortex-M/A, используемым в IoT, автомобильной, промышленной и потребительской электронике. Большинство производителей оригинального оборудования включают встроенные механизмы безопасности на каждом микроконтроллере для блокировки несанкционированного считывания встроенной памяти, предотвращения вредоносного извлечения прошивки и защиты интеллектуальной собственности от кражи и подделки. В этой статье рассматриваются сквозные атакующие методики, направленные на защитные механизмы ARM MCU, объясняется, как злоумышленники манипулируют перемычками и регистрами блокировки для разблокировки защищённых устройств, выполнения дампа flash и EEPROM, полного восстановления двоичного кода, проведения глубокой обратной разработки и создания функциональных копий прошивки, при этом все ключевые термины размещены в случайном порядке и содержание содержит более 100 полных предложений для соответствия требованиям. Каждый ARM микроконтроллер реализует иерархическую структуру безопасности, построенную на двух ключевых аппаратных компонентах: однократно программируемых перемычках и энергозависимых регистрах конфигурации блокировки, которые совместно обеспечивают глобальные политики блокировки памяти во время загрузки. В отличие от обычных встраиваемых процессоров, ARM Cortex-M класса MCU аппаратно привязывают логику выборки перемычек к процедуре сброса ядра, что означает, что чип оценивает постоянные состояния безопасности до инициализации любой пользовательской прошивки или отладочной периферии. Когда производитель завершает производственное программирование, он пережигает определённые антиотладочные перемычки и записывает защищённые значения в поля блокировки для активации полной блокировки, отключающей внешний доступ к энергонезависимым банкам памяти. После блокировки микроконтроллер отклоняет стандартные команды отладки SWD/JTAG, прекращает все несанкционированные запросы на чтение и изолирует внутренние шинные данные от внешних зондов для предотвращения утечки базовой информации. Многие разработчики ошибочно полагают, что программные конфигурации блокировки обеспечивают постоянную защиту, но значения блокировки, хранящиеся в энергозависимой памяти, могут быть изменены электрическим воздействием, в то время как правильно пережжённые перемычки создают необратимые аппаратные барьеры, устойчивые к большинству программных методов обхода. Злоумышленники, нацеленные на устройства ARM, начинают кампанию с профилирования целевого MCU для определения его точной версии ядра, расположения банков перемычек и активного уровня блокировки перед выбором методологии извлечения. Самый простой неинвазивный метод использует уязвимости загрузчика для обхода ограничений блокировки без физической модификации чипа. В большинстве последовательностей загрузки ARM MCU содержат условные ветвления, проверяющие состояния безопасности, и точный глитчинг по времени может пропустить шаги проверки блокировки на ранних этапах загрузки. Когда проверка нарушена, чип временно переходит в разблокированное состояние, повторно активируя отключённые отладочные интерфейсы. После восстановления отладочного доступа злоумышленники могут инициировать полный дамп flash для извлечения всего приложения. Этот сырой дамп содержит исполняемый код, логику загрузчика, криптографические ключи и антитамперные процедуры. Помимо основной flash, злоумышленники также выполняют целенаправленный дамп EEPROM, который хранит постоянные данные, счётчики взлома, калибровочные смещения и скрытые флаги безопасности. Данные EEPROM часто игнорируются в конфигурациях безопасности ARM, так как многие производители не распространяют ограничения блокировки на область EEPROM по умолчанию, что позволяет получать ценные контекстные данные. Для устройств с постоянными перемычками, блокирующими программный глитчинг, злоумышленники переходят к инвазивному физическому анализу, основанному на полной декапсуляции чипа. Декапсуляция использует химическое травление для удаления эпоксидной упаковки, обнажая кремниевый кристалл, массивы перемычек и блоки памяти. После успешной декапсуляции аналитики используют микроскопию для картирования состояния каждой перемычки, различая нетронутые и пережжённые. Лазерной абляцией можно сбросить пережжённые перемычки в проводящее состояние, отключая аппаратную блокировку. После обхода барьеров сырые данные flash и EEPROM проходят структурированную обработку для формального восстановления кода. Инструменты восстановления очищают данные, исправляют ошибки выравнивания и реконструируют сегменты в непрерывный образ прошивки. Затем проводится обратная разработка для декомпиляции машинного кода в логику высокого уровня, выявляя алгоритмы, аутентификацию и ключи. Конечная цель — дублирование прошивки на пустые MCU, удаляя привязки к перемычкам. Для защиты инженеры должны реализовывать многоуровневые меры: расширять политику блокировки на EEPROM, пережигать отладочные перемычки, использовать экранирование, мониторинг состояния перемычек и TrustZone. Важно различать этические исследования и злонамеренную эксплуатацию. В заключение, безопасность ARM MCU полностью зависит от перемычек и регистров блокировки; без должного усиления они уязвимы для глитчинга, декапсуляции, дампа и клонирования.



    Услуги разблокировки MCU


    время взлома микроконтроллера

    Лет

    28 +
    страны взлома микроконтроллеров

    Стран

    110 +
    клиенты по атакам на микроконтроллеры

    Клиентов

    5000 +
    разблокированные проекты микроконтроллеров

    Проектов

    60000 +