Тема 11. Архітектура центрального процесора архітектури ARM

Сайт: Навчально-інформаційний портал НУБіП України
Курс: Комп'ютерна схемотехніка та архітектура комп'ютерів (КН). Ч1 ☑️
Книга: Тема 11. Архітектура центрального процесора архітектури ARM
Надруковано: Гість-користувач
Дата: четвер, 9 квітня 2026, 20:28

1. Загальна інформація

Архітектура ARM (Advanced RISC Machine — поліпшена RISC машина) — 32-бітна RISC архітектура процесорів, яку розробила компанія ARM Limited. Широко застосовується у розробці портативних пристроїв. Головною причиною цього є використання енергоощадних технологій. Саме тому ця архітектура домінує у пристроях, головною ідеєю яких є енергоощадність.

Сьогодні сімейство ARM займає приблизно 75 % всіх портативних 32-бітних RISC процесорів, що робить його найвикористовуванішим серед усіх 32-бітних архітектур. Процесори ARM знайшли своє застосування у багатьох пристроях (мобільні телефони і смартфони, планшети, КПК, цифрові аудіоплеєри, калькулятори, ігрові консолі тощо), комп'ютерній периферії: маршрутизатори, NAS-сервери, апаратні брендмауери.

2. Історія

ARM дизайн був започаткований в 1983 році як проект розвитку в Acorn Computers Ltd для створення компактних процесорів RISC-архітектури. Під керівництвом Софії Уілсон та Стівом Фурбером, ключовим завданням яких була розробка низькорівневої обробки переривань вводу/ виводу (як MOS технології 6502) що використовуються в існуючих комп'ютерах ACORN-івського дизайну. Технологія доступу до пам'яті за допомогою архітектури 6502 дозволила розробникам виробляти швидкі машини без використання дорогого обладнання прямого доступу до пам'яті. Група завершила розробку зразків під назвою ARM1 у квітні 1985 року[4], і першу «реальну» робочу систему ARM2 вже в наступному році.

ARM2 архітектура характеризувалася 32-розрядною шиною даних, 26-розрядна (64 Мбайт) адресного простору і шістнадцять 32-розрядних регістрів. Програмний код був змушений перебувати всередині перших 64 Мбайт пам'яті, так як лічильник команд був обмежений 26-ма бітами, тому що верхні 6 біт 32-розрядних регістрів зарезервовані в якості статус-міток. ARM2, можливо, є найпростішими із використовуваних 32-бітних мікропроцесорів у світі, робота якого забезпечена лише 30000-ми транзисторами (порівняйте із на шість років старішою моделлю Motorola 68000, яка містила близько 70000 транзисторів). Така простота походить від відсутності мікропрограми (що становить приблизно від однієї чверті до однієї третини процесору 68000), і не включав кешу. Ця простота призводила до нижчої швидкості виконання, ніж у процесора Intel 80286[5]. Наступник,ARM3, був випущений із 4KB-им кешом, що ще більше поліпшило показники.

В кінці 1980-х років компанія Apple та VLSI Technology почала працювати з Acorn-ом над новими версіями ядра ARM. Робота була настільки результативною, що в 1990 році Acorn перетворила проектну групу в нову компанію під назвою Advanced RISC Machines. З цієї причини, ARM іноді розшифровують, як Advanced RISC Machines (замість Acorn RISC Machines). Advanced RISC Machines стали ARM Ltd коли їхня материнська компанія, ARM Holdings PLC, вийшла на Лондонську фондову біржу і NASDAQ у 1998 році[6].

В результаті співробітництва Apple-ARM в кінцевому результаті був створений ARM6, вперше випущений в 1991 році. Apple використала процесор ARM 610, заснований на ядрі ARM6, в якості основної бази для їх Apple Newton КПК. У 1994 році Acorn використовує ARM 610 в якості основного процесора в RISC PC комп'ютерах. DEC ліцензували ARM6 архітектуру (що викликало деяку плутанину, оскільки вони також виготовляли DEC Alpha) для виготовлення StrongARM . На 233 МГц цей процесор витрачав лише 1 Вт енергії (новіші версії витрачали значно менше). Ця робота була потім передана Intel для врегулювання частини позовів, і Intel скористалися цією можливістю, щоб поновити їх застарілі процесори i960 та i860, які відповідали StrongARM-архітектурі. Пізніше Intel розробила своє власне високопродуктивне рішення, відоме як XScale яке вони потім продали технологічній компанії Marvell.

Ядро ARM, попри всі зміни, залишалося такого ж розміру. В ARM2 було 30000 транзисторів, в той час як ARM6 зріс лише до 35000. ARM бізнес завжди готовий продати ліцензію топології інтегральних схем, яку використовують для створення мікроконтролерів і процесорів на основі цього ядра. Найуспішнішої реалізації набув процесор ARM7TDMI, який присутній у майже кожному побутовому приладі, так як став основою для сотень мільйонів мікроконтролерів. Ідея полягає в тому, що ODM поєднує ARM ядро і деяку кількість необхідних додаткових частин для виробництва повного процесора, який потім можна виготовляти на старих фабриках з виробництва напівпровідникової продукції, і ще бути достатньо ефективними при низьких витратах виробництва. Станом на січень 2008 року виготовлено понад 10 мільярдів ARM ядер, і iSuppli прогнозує виробництво 5 мільярдів на рік до 2011 року.[7]

Загальна архітектура підтримувана смартфонами, КПК та іншими портативними пристроями побудована на ARMv4. У наш час більша кількість високотехнологічних пристроїв використовують процесори XScale та ARM926 ARMv5TE, ніж StrongARM, ARM925T і ARM7TDMI основаних на ARMv4 процесорах.

3. Ядра ARM

Серія

Версія архітектури

Ядро

Характеристика

Кеш (I/D)/MMU

Типова швидкодія @ MHz

Використання

ARM1

ARMv1

ARM1

Відсутній

другий процесор для BBC Micro

ARM2

ARMv2

ARM2

До архітектури додано MUL (інструкцію множення)

Відсутній

4 MIPS @ 8 MHz
0.33 DMIPS/MHz

Acorn Archimedes, Chessmachine

ARMv2a

ARM250

Інтегрований MEMC (Блок керування пам'яттю), Графічний процесор та процесор вводу-виводу. Архітектура 2a додала SWP і SWPB (своп) інструкції.

Відсутній, MEMC1a

7 MIPS @ 12 MHz

Acorn Archimedes

ARM3

ARMv2a

ARM2a

Вперше використовується в архітектурі ARM процесорний кеш.

уніфіковані 4кб

12 MIPS @ 25 MHz
0.50 DMIPS/MHz

Acorn Archimedes

ARM6

ARMv3

ARM60

v3 архітектура вперше підтримувала ширину адресної шини пам'яті 32 біти (на відміну від 26 бітів)

відсутній

10 MIPS @ 12 MHz

3DO Interactive Multiplayer, Zarlink GPS приймач

ARM600

Кеш та співпроцесорна шина (для FPA10 розрахунків із плаваючою комою).

уніфіковані 4кб

28 MIPS @ 33 MHz

ARM610

Кеш, відсутня співпроцесорна шина.

уніфіковані 4кб

17 MIPS @ 20 MHz
0.65 DMIPS/MHz

Acorn Risc PC 600, Apple Newton 100 series

ARM7

ARMv3

ARM700

уніфіковані 8кб

40 MHz

Acorn Risc PC прообраз процесорної плати

ARM710

уніфіковані 8кб

40 MHz

Acorn Risc PC 700

ARM710a

уніфіковані 8кб

40 MHz
0.68 DMIPS/MHz

Acorn Risc PC 700, Apple eMate 300

ARM7100

Інтегрована система на кристалі.

уніфіковані 8кб

18 MHz

Psion Series 5

ARM7500

Інтегрована система на кристалі.

уніфіковані 4кб

40 MHz

Acorn A7000

ARM7500FE

Інтегрована система на кристалі. Додано FPA (Floating-Point Accelerator — прискорювач обрахунків із плаваючою комою) та EDO (Enhanced Data Out — прискорений ввід/вивід) контролер пам'яті.

уніфіковані 4кб

56 MHz
0.73 DMIPS/MHz

Acorn A7000+

ARM7TDMI

ARMv4T

ARM7TDMI(-S)

3-х етапний конвеєр, Thumb

відсутній

15 MIPS @ 16.8 MHz

Game Boy Advance, Nintendo DS, iPod, Lego NXT, Atmel, AT91SAM7, Juice Box

ARM710T

уніфіковані 8кб, MMU

36 MIPS @ 40 MHz

Psion Series 5mx, Psion Revo/Revo Plus/Diamond Mako

ARM720T

уніфіковані 8кб, MMU

60 MIPS @ 59.8 MHz

Zipit Wireless Messenger

ARM740T

MPU

ARMv5TEJ

ARM7EJ-S

Jazelle DBX, вдосконалені інструкції обробки цифрових сигналів, 5-ти етапний конвеєр

відсутній

StrongARM

ARMv4

SA-110

16 KB/16 KB, MMU

203 MHz
1.0 DMIPS/MHz

Apple Newton 2x00 серії, Acorn Risc PC, Rebel/Corel Netwinder, Chalice CATS, Psion Netbook

SA-1110

16 KB/16 KB, MMU

233 MHz

LART, Intel Assabet, Ipaq H36x0, Balloon2, Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 series

ARM8

ARMv4

ARM810[8]

5-ти етапний конвеєр, статистичне передбачення розгалужень, пам'ять із подвійною пропускною шиною

уніфіковані 8кб, MMU

84 MIPS @ 72 MHz
1.16 DMIPS/MHz

Acorn Risc PC прообраз процесорної плати

ARM9TDMI

ARMv4T

ARM9TDMI

5-ти етапний конвеєр

відсутній

ARM920T

16 KB/16 KB, MMU

200 MIPS @ 180 MHz

Armadillo, GP32,GP2X (first core), Tapwave Zodiac (Motorola i. MX1), Hewlet Packard HP-49/50 Calculators, Sun SPOT, Cirrus Logic EP9315, Samsung s3c2442 (HTC TyTN, FIC Neo FreeRunner)

ARM922T

8 кб/8 кб, MMU

ARM940T

4 кб/4 кб, MPU (memory protection unit — блок захисту пам'яті)

GP2X (друге ядро), Meizu M6 Mini Player[9] [10]

ARM9E

ARMv5TE

ARM946E-S

Вдосконалені інструкції обробки цифрових сигналів

змінний, сильно пов'язана пам'ять, MPU

Nintendo DS, Nokia N-Gage, Conexant 802.11 chips

ARM966E-S

без кешу, TCMs (terminal-to-computer multiplexer — мультиплексор каналу зв'язку)

ST Micro STR91xF, додається Ethernet

ARM968E-S

без кешу, TCMs

ARMv5TEJ

ARM926EJ-S

Jazelle DBX, вдосконалені інструкції обробки цифрових сигналів

різноманітний, TCMs, MMU

220 MIPS @ 200 MHz,

Мобільні телефони: Sony Ericsson (серії K та W); Siemens та Benq (серії x65 та новіші); Texas Instruments OMAP1710, OMAP1610, OMAP1611, OMAP1612, OMAP-L137; Qualcomm MSM6100, MSM6125, MSM6225, MSM6245, MSM6250, MSM6255A, MSM6260, MSM6275, MSM6280, MSM6300, MSM6500, MSM6800; Freescale i.MX21, i.MX27, Atmel AT91SAM9, GPH Wiz

ARMv5TE

ARM996HS

Самотактований процесор, вдосконалені інструкції обробки цифрових сигналів

без кешу, TCMs, MPU

ARM10E

ARMv5TE

ARM1020E

(VFP), 6-рівневий конвеєр, вдосконалені інструкції обробки цифрових сигналів

32 KB/32 KB, MMU

ARM1022E

(VFP)

16 KB/16 KB, MMU

ARMv5TEJ

ARM1026EJ-S

Jazelle DBX, вдосконалені інструкції обробки цифрових сигналів

різний, MMU чи MPU

XScale

ARMv5TE

80200/IOP310/IOP315

Процесор вводу/виводу, вдосконалені інструкції обробки цифрових сигналів

80219

400/600 MHz

Thecus N2100

IOP321

600 BogoMips @ 600 MHz

Iyonix

IOP33x

IOP34x

1-2 ядра, прискорення RAID

32K/32K L1, 512K L2, MMU

PXA210/PXA250

Прикладний процесор, 7-ми рівневий конвеєр

Zaurus SL-5600, 0iPAQ H3900

PXA255

32KB/32KB, MMU

400 BogoMips @ 400 MHz

Gumstix basix & connex, Palm Tungsten E2,Mentor Ranger & Stryder, iRex ILiad

PXA26x

за замовчуванням 400 MHz, максимально 624 MHz

Palm Tungsten T3

PXA27x

Прикладний процесор

32 кб/32 кб, MMU

800 MIPS @ 624 MHz

Gumstix verdex, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50, and x51 series, Motorola Q, Balloon3, Trolltech Greenphone, Palm TX, Motorola Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Trēo 650-755p

PXA800(E)F

Monahans

1000 MIPS @ 1.25 GHz

PXA900

Blackberry 8700, Blackberry Pearl (8100)

IXC1100

Процесор панелі управління

IXP2400/IXP2800

IXP2850

IXP2325/IXP2350

IXP42x

NSLU2

IXP460/IXP465

ARM11

ARMv6

ARM1136J(F)-S

SIMD, Jazelle DBX, (VFP), 8-ми етапний конвеєр

різний, MMU

740 @ 532—665 MHz (i.MX31 SoC), 400—528 MHz

Texas Instruments OMAP2420 (Nokia E90, Nokia N93, Nokia N95, Nokia N82), Zune, BUGbase, Nokia N800, Nokia N810, Qualcomm MSM7200 (разом із інтегрованим ARM926EJ-S співпроцесором @ 274MHz, використовувався в Eten- Glofish, HTC TyTN II, HTC Nike), Freescale i.MX31 (який використовувався в оригінальному Zune 30gb).

ARMv6T2

ARM1156T2(F)-S

SIMD, Thumb-2, (VFP), 9-ти етапний конвеєр

різний, MMU

різний, MPU

ARMv6KZ

ARM1176JZ(F)-S

SIMD, Jazelle DBX, (VFP)

різний, MMU+TrustZone

Apple iPhone, Apple iPod touch, Conexant CX2427X, Motorola RIZR Z8, Motorola Motorizr Z10|Motorola RIZR Z10

ARMv6K

ARM11 MPCore

1-4 ядра SMP, SIMD, Jazelle DBX, (VFP)

різний, MMU

Nvidia APX 2500

Cortex

ARMv7-A

Cortex-A8

Прикладний процесор, VFP, NEON, Jazelle RCT, Thumb-2, 13-ти етапний суперскалярний конвеєр

різний (L1+L2), MMU+TrustZone

до 2000 (2.0 DMIPS/MHz на частоті 600 MHz до більш ніж 1 GHz)

Texas Instruments OMAP3, Pandora

Cortex-A9

Прикладний процесор, (VFP), (NEON), Jazelle RCT and DBX, Thumb-2, 8-ти етапний, багатократний, спекулятивний суперскалярний конвеєр, виконання поза порядком

2.0 DMIPS/MHz

Cortex-A9 MPCore

As Cortex-A9, 1-4 core SMP

MMU+TrustZone

2.0 DMIPS/MHz

Texas Instruments OMAP4430/4440, ST-Ericsson U8500, Nvidia Tegra2

ARMv7-R

Cortex-R4(F)

Поглиблено вбудований процесор реального часу[11], (FPU)

різний кеш, MPU на замовлення

600 DMIPS

TMS570 від Texas Instruments, Broadcom використовує

ARMv7-M

Cortex-M3

Профіль мікроконтролеру, тільки Thumb-2.

кеш відсутній, (MPU)

125 DMIPS @ 100 MHz

Luminary Micro[2] microcontroller family, STMicroelectronics STM32[3], Energy Micro EFM32[4]

ARMv6-M

Cortex-M0

Профіль мікроконтролеру, тільки підмножина Thumb-2 (16-bit Thumb команди та BL, MRS, MSR, ISB, DSB, DMB).

кеш відсутній.

0.9 DMIPS/MHz

NXP Semiconductors NXP LPC1100, Nuvoton

Cortex-M1

Для застосування в FPGA, профіль мікроконтролеру, Thumb-2 (BL, MRS, MSR, ISB, DSB, та DMB).

відсутній, на замовлення сильнозв'язана пам'ять.

до 136 DMIPS @ 170 MHz[12] (0.8 DMIPS/MHz[13], MHz доступно для FPGA-залежних)

«Actel ProASIC3 and Actel Fusion PSC devices will sample in Q3 2007»[14]

4. Особливості дизайну

Для того, щоб зберегти якісний дизайн, простий і швидкий, він позбавлявся апаратного мікрокоду, наприклад, як багато простих 8-бітних 6502 процесорів, які використовувалися у мікрокомп’ютерах попередника — ACORN-а.

ARM архітектура включає багато наступних властивостей RISC архітектури:

  • Завантажувально/зберігальна архітектура
  • Відсутність підтримки заміщеного доступу до пам'яті (в даний час підтримується в ARMv6 ядрах, за деякими винятками, пов'язаними із завантаженням/зберіганням кількох слів інструкції)
  • Уніфіковані 16 × 32-розрядних файлів регістру
  • Інструкція фіксованої ширини 32 біти для зручності декодування і конвеєрної обробки, ціною зменшення щільності коду. (Пізніше режим перегляду збільшує щільність коду.)
  • Переважаюче виконання в один цикл

Були застосовані деякі унікальні можливості для компенсації простого дизайну, для того щоб зрівнятися з тогочасними процесорами (80286 та 68020):

Умовне виконання більшості інструкцій, зменшення розгалужень службових сигналів та компенсція відсутності передбаченого прогнозування розгалужень

Арифметичні інструкції замінюються умовними кодами тільки тоді, коли без цього не можна обійтися

32-бітна багаторегістрова схема циклічного зсуву, яка може бути використана без незручного виконання в більшості арифметичних інструкцій та адресованих розрахунків

Потужна адресна індексація

Регістр зв'язків для швидкого звернення до листа функцій.

Проста, але швидка, пріорітерна 2-х рівнева підсистема переривань з перемикачем блоку регістрів.

Цікавим додатком до дизайну ARM ядра є використання 4-бітного коду обставини на початку кожної інструкції, а це означає що виконання кожної інструкції умовно необов'язкове. Інші процесорні архітектури, як правило, мають код обставини як відгалуження інструкції.

Це значно скорочує кодування біту придатного для переміщення інструкції в доступну пам'ять; але з іншого боку, вона дозволяє уникнути розгалуження інструкцій при генерації коду для малих операторів якщо. Стандартним прикладом є Алгоритм Евкліда:

На мові програмування C виглядає так:

    while (i != j)

    {

       if (i > j)

           i -= j;

       else

           j -= i;

    }

Для ARM процесорів асемблерний код виглядає так:

 loop    CMP    Ri, Rj      ; set condition "NE" if (i != j)

                            ;               "GT" if (i > j),

                            ;            or "LT" if (i < j)          

        SUBGT  Ri, Ri, Rj   ; if "GT", i = i-j; 

        SUBLT  Rj, Rj, Ri   ; if "LT", j = j-i;

        BNE    loop         ; if "NE", then loop

що дозволяє уникнути розгалуження коду навколо операторів then та else.

Ще однією унікальною особливістю набору є можливість згортання зсувів і обертань при «обробці даних» (арифметичних, логічних, та регіст-регістрових переміщень) інструкції, для прикладу як у C-операторі

a += (j << 2);

окремий цикл інструкції для ARM, може бути оформлено як одне слово.

ADD Ra, Ra, Rj, LSL #2

Це призводить до того, що типові ARM програми щільніші ніж очікувалося і з меншою кількістю звернень до пам'яті, тому конвеєр використовується ефективніше. Навіть попри те, що ARM працює, як багато хто вважає, із нижчою швидкістю, але він в цілому успішно конкурує з набагато складнішими процесорними архітектурами.

ARM процесори також мають деякі особливості, які рідко зустрічаються в інших RISC архітектурах, такі як служби аналогічні до командного лічильника-споріднених рішень (по суті в ARM архітектурі лічильник команд є одним із 16-ти регістрів) та перед-/пост- прирістні режими адресації.

Ще одним пунктом відзначити що архітектура ARM існує не так уже й довго, і з плином часу кількість інструкцій збільшуються. Деякі ранні ARM процесор (наприклад до ARM7TDMI) не мали інструкції для зберігання двох байтів, таким чином, строго кажучи, для них не було можливим генерувати код, який буде введено шляхом очікування для C-об'єктів типу «коротка непостійна».

ARM7 і більш ранні зразки мають три етапи конвеєру: стадії завантаження, декодування, і виконання. Конструкції із кращими робочими характеристиками, таких які можна було очікувати в ARM9, мають п'ять етапів конвеєру. Додаткові зміни для більшої продуктивності включають підсумовувач, та ширші розгалуження передбачувальної логіки.

Архітектура забезпечує нав'язливі шляхи розширення набору інструкцій, використовуючи «співпроцесори», які можуть бути адресовані за допомогою MCR, MRC, MRRC і MCRR команд програмного забезпечення. Простір співпроцесорів логічно поділяється на 16 співпроцесорів з номерами від 0 до 15, співпроцессор 15 (cp15) зарезервований для деяких типових контрольних функцій, таких як управління кеш-ом і MMU операції (на процесорах, які мають один).

На ARM основаних пристроях, периферія підключається до процесору за картою їх фізичних регістрів в просторі ARM пам'яті чи в просторі співпроцесорів або через підключення до іншого пристрою (шину), яку, в свою чергу, надає процесор. Доступ до співпроцесорів має менший час очікування тому деякі периферійні пристрої (наприклад, контролер переривань процесору XScale) можуть мати доступ обома шляхами (через пам'ять і через співпроцесори).

Доступність

Шрифти Шрифти

Розмір шрифта Розмір шрифта

1

Колір тексту Колір тексту

Колір тла Колір тла

Кернінг шрифтів Кернінг шрифтів

Видимість картинок Видимість картинок

Інтервал між літерами Інтервал між літерами

0

Висота рядка Висота рядка

1.2

Виділити посилання Виділити посилання

Вирівнювання тексту Вирівнювання тексту

Ширина абзацу Ширина абзацу

0