ARM
ARM (ang. Advanced RISC Machine, pierwotnie Acorn RISC Machine) to rodzina architektur procesorów 32-bitowych oraz 64-bitowych typu RISC.
Wielorakie wersje rdzeni ARM zyskały popularność w systemach wbudowanych oraz w aplikacjach o niskim zużyciu energii ze względu na ich energooszczędną architekturę.
Procesory bazujące na architekturze ARM są jednymi z najczęściej wykorzystywanych na świecie. Można je znaleźć w takich urządzeniach jak dyski twarde, telefony komórkowe, routery, kalkulatory, a nawet zabawki dziecięce. Obecnie dominują na rynku, zajmując ponad 75% udziału w segmencie 32-bitowych CPU dla systemów wbudowanych. Najbardziej znanym rdzeniem ARM jest ARM7TDMI, który był powszechnie stosowany w telefonach komórkowych. Architektura ARM umożliwia instalację systemu operacyjnego na procesorze, z zaimplementowanymi mechanizmami wielowątkowości oraz możliwością wykorzystania stosu TCP/IP i systemu plików, takiego jak FAT32. Powstało wiele systemów operacyjnych wykorzystujących tę technologię, takich jak Windows CE, FreeBSD, NUTOS (Ethernut) oraz dystrybucje Linuksa dedykowane dla systemów wbudowanych (np. Embedded Debian, Embedded Ubuntu).
Historia
Prace nad pierwszym procesorem ARM rozpoczęły się w 1983 roku w brytyjskiej firmie Acorn Computers Ltd.. Grupa inżynierów, w tym Sophie Wilson i Steve Furber, zaczęła projektować rdzeń, który miał być udoskonaloną wersją procesora MOS 6502 od firmy MOS Technology. Acorn w tym czasie produkował komputery oparte na mikroprocesorze MOS 6502, więc celem projektu było stworzenie nowego, bardziej zaawansowanego mikroprocesora.
Pierwsza wersja testowa, znana jako ARM1, powstała w 1985 roku, a rok później zakończono prace nad wersją produkcyjną ARM2.
ARM2 był wyposażony w 32-bitową szynę danych, 26-bitową przestrzeń adresową oraz szesnaście 32-bitowych rejestrów. W swoim czasie był to najprostszy szeroko stosowany 32-bitowy mikroprocesor, zawierający jedynie 30 tysięcy tranzystorów. Jego prostota wynikała głównie z braku mikrokodu oraz braku pamięci cache, co przekładało się na wyjątkowo niski pobór mocy oraz większą szybkość przetwarzania niż procesor Intel 80286.
Kolejna wersja, ARM3, wprowadziła 4 KB pamięci cache, co jeszcze bardziej poprawiło wydajność.
Pod koniec lat osiemdziesiątych XX wieku firma Apple Computer rozpoczęła współpracę z Acorn Computers w celu opracowania nowszej wersji rdzenia ARM. W wyniku tego przedsięwzięcia w 1990 roku powstała firma Advanced RISC Machines (ARM Ltd.).
Owocem tej współpracy był procesor ARM6, wprowadzony na rynek w 1990 roku, który został użyty przez Apple w palmtopie Apple Newton.
Rdzeń procesora ARM6 zawiera około 35 tysięcy tranzystorów i jest nieznacznie większy od rdzenia ARM2 (30 tysięcy tranzystorów). Dzięki swojej prostocie, rdzeń ARM może być łączony z dodatkowymi blokami funkcjonalnymi, co pozwala na stworzenie mikroprocesora dostosowanego do specyficznych wymagań w jednej obudowie.
Podstawą działalności ARM Ltd. jest sprzedaż licencji na zaprojektowane rdzenia, co umożliwiło również powstanie mikrokontrolerów opartych na architekturze ARM.
Firma DEC nabyła licencję na architekturę ARM i zaprojektowała procesor StrongARM. Przy częstotliwości 233 MHz, procesor ten pobierał jedynie 1 W mocy (nowsze wersje StrongARM zużywają znacznie mniej). Projekt ten następnie został przejęty przez Intel w ramach umowy między firmami. Dla Intela była to okazja do zastąpienia przestarzałej architektury i960 nową architekturą StrongARM. Na podstawie StrongARM Intel stworzył bardzo wydajny mikroprocesor o nazwie XScale.
Architektura
Architektura RISC zakłada, że instrukcje procesorów ARM są zaprojektowane tak, aby wykonywały jedną konkretną operację, przetwarzaną w jednym cyklu maszynowym.
Ciekawym rozwiązaniem w porównaniu do innych architektur jest zastosowanie 4-bitowego kodu warunkowego na początku każdej instrukcji. Umożliwia to wykonywanie instrukcji warunkowych. Choć ogranicza to dostępne miejsce dla instrukcji przeniesień w pamięci, z drugiej strony eliminuje potrzebę stosowania instrukcji rozgałęzień w kodzie zawierającym wiele prostych instrukcji warunkowych. Klasycznym przykładem jest implementacja algorytmu Euklidesa do wyznaczania największego wspólnego dzielnika.
Funkcja w języku C może wyglądać tak:
W asemblerze procesora ARM będzie miała postać następującej pętli:
W powyższym kodzie nie widać rozgałęzień dla instrukcji if oraz else.
Inną unikalną cechą zestawu instrukcji procesora ARM jest możliwość łączenia operacji przesunięcia i obrotu bitów z instrukcjami arytmetycznymi, logicznymi oraz przesyłania danych z rejestru do rejestru. Dzięki temu wyrażenie w języku C „a += (j << 2);” może zostać skompilowane do pojedynczej instrukcji asemblera.
Te cechy sprawiają, że typowy program napisany dla procesorów ARM zawiera mniej linii kodu niż w przypadku innych procesorów RISC, co prowadzi do zmniejszenia liczby operacji pobrania/zapisu argumentów instrukcji, a tym samym do bardziej efektywnej potokowości. Mimo że procesory ARM pracują z relatywnie niską częstotliwością zegara, są konkurencyjne w porównaniu do bardziej złożonych procesorów.
Rodziny procesorów ARM
- 1987: ARM2
- 1989: ARM3
- 1991: ARM6
- 1993: ARM7
- 1994: ARM8
- 1995: ARM9
- 1998: ARM10
- 2002: ARM11
- 2004: ARM Cortex-M (32-bitowe)
- 2005: ARM Cortex-A (32-bitowe)
- 2011: ARM Cortex-R (32-bitowe)
- 2012: ARM Cortex-A (64-bitowe)
- 2019: ARM Neoverse (64-bitowe)
- 2020: ARM Cortex-R (64-bitowe)
Producenci
- AMD
- Analog Devices
- Apple
- Atmel
- Broadcom
- Freescale (dawniej Motorola)
- IBM
- Infineon
- Intel
- Luminary Micro
- MediaTek
- NEC Corporation
- NetSilicon
- Nuvoton
- Nvidia
- Qualcomm
- Rockchip
- Samsung
- ST-Ericsson
- STMicroelectronics
- Texas Instruments
- Toshiba
- VIA Technologies
Zobacz też
Przypisy
Linki zewnętrzne
- Strona firmowa ARM Ltd.
- ChibiOS/RT Homepage
- FreeRTOS Homepage
- Asembler ARM
- Mikrokontrolery ARM firmy NXP (dawniej Philips) (zarchiwizowane z tego adresu (2001-02-08))
- Mikrokontrolery ARM firmy Atmel
- NEON
- ARM projects and information
- Kurs ARM po polsku
- Asembler Arm64 dla Windows. Podstawowa wiedza w kapsułce