Тема 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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 — блок захисту пам'яті) |
||||||
|
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) можуть мати доступ обома шляхами (через пам'ять і через співпроцесори).
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу