Advanced RISC Machines

De Viquipèdia
Dreceres ràpides: navegació, cerca
Processador ARM en una impressora HP

Advanced RISC Machines (ARM) és una família de microprocessadors RISC dissenyats per l'empresa Acorn Computers i desenvolupats per Advanced RISC Machines Ltd., una empresa derivada de l'anterior.

Història[modifica | modifica el codi]

Microprocessador ARM en un encaminador

El disseny del ARM va començar el 1983 com un projecte de desenvolupament en l'empresa Acorn Computers Ltd Roger Wilson i Steve Furber lideraven l'equip, l'objectiu era, originalment, el desenvolupament d'un processador avançat, però amb una arquitectura similar a la del MOS 6502. La raó era que Acorn tenia una llarga línia d'ordinadors personals basats en aquest micro, per la qual cosa tenia sentit desenvolupar-ne un amb el qual els desenvolupadors se sentissin còmodes.

L'equip va acabar el disseny preliminar i els primers prototips del processador l'any 1985, al que van anomenar ARM1. La primera versió utilitzada comercialment es va batejar com ARM2 i es va llançar l'any 1986.

L'arquitectura del ARM2 té un bus de dades de 32 bits si ofereix un espai d'adreces de 26 bits, juntament amb 16 registres de 32 bits. Un d'aquests registres s'utilitza com a comptador de programa, aprofitant els seus 4 bits superiors i els 2 inferiors per contenir el flag d'estat del processador.

El ARM2 és probablement el processador de 32 bits útil més simple del món, ja que té només 30.000 transistors. La seva simplicitat es deu al fet que no està basat en microcodi (sistema que sol ocupar al voltant de la quarta part de la quantitat total de transistors utilitzats en un processador) ja que, com era comú en aquella època, no inclou memòria cau. Gràcies a això, el seu consum en energia és bastant baix, alhora que ofereix un millor rendiment que un 286. El seu successor, el ARM3, inclou una petita memòria cau de 4 KiB, el que millora els accessos a memòria repetitius.

A finals dels anys 80, Apple Computer va començar a treballar amb Acorn en noves versions del nucli ARM. En Acorn es van adonar que el fet que el fabricant d'un processador fos també un fabricant d'ordinadors podria fer enrere als clients, per la qual cosa es va decidir crear una nova companyia anomenada ARM Holdings, que seria l'encarregada del disseny i gestió de les noves generacions de processadors ARM. Passava això en l'any 1990.

Aquest treball va derivar en l'ARM6, presentat en 1991. Apple va utilitzar el ARM 610 (basat en el ARM6), com processador bàsic pel seu innovador PDA, l'Apple Newton. Per la seva banda, Acorn el va utilitzar a 1994 com a processador principal a la RiscPC.

El nucli va mantenir la seva simplicitat tot i els canvis: en efecte, el ARM2 té 30.000 transistors, mentre que el ARM6 només compta amb 35.000. La idea era que l'usuari final combinés el nucli del ARM amb un nombre opcional de perifèrics integrats i altres elements, podent crear un processador complet a la mesura de les seves necessitats.

La major utilització de la tecnologia ARM es va assolir amb el processador ARM7TDMI, amb milions d'unitats en telèfons mòbils i sistemes de videojocs portàtils.

DEC llicenciar el disseny, la qual cosa va generar una mica de confusió perquè ja produïa el DEC Alpha, i va crear el StrongARM. Amb una velocitat de rellotge de 233 MHz, aquest processador consumia només 1 W de potència (aquest consum d'energia s'ha reduït en els models més recents). Aquesta tecnologia va passar posteriorment a mans de Intel, com a fruit d'un acord jurídic, que la va integrar en la seva línia de processadors Intel i960 i va fer més àrdua la competència.

Freescale (una empresa que va derivar de Motorola l'any 2004), IBM, Infineon Technologies, OKI, Texas Instruments, Nintendo, Philips, VLSI, Atmel, Sharp, Samsung i STMicroelectronics també llicenciar el disseny bàsic de l'ARM .

El disseny del ARM s'ha convertit en un dels més usats del món, des de discs durs fins joguines. Avui en dia, prop del 75% dels processadors de 32 bits tenen aquest xip en el seu nucli.

Families de ARMs[modifica | modifica el codi]

Actualment hi ha diferents tipus de processadors ARM creats per ARM Holdings que estan dividits en diferents famílies segons els dispositius a què van dirigits. Tot i que el més coneguts són els de la sèrie A perquè són els que s'utilitzen en telèfons intel·ligents o tauletes tàctils per diverses empreses, és bo saber que existeix diversitat de processadors amb arquitectura ARM. Són aquests:
Sèrie A:
És la sèrie més coneguda dels processadors ARM, està dedicada als dispositius que tenen un sistema operatiu que gestiona la interacció entre el hardware i software. Aquests processadors són els més utilitzats en smartphones i tablets independentment de si funcionen sota Android, IOs o Windows. També s’empren en televisions i en dispositius com GPS.
Sèrie R:
Aquesta sèrie és la que està encarada cap a dispositius que treballen a temps real. Normalment aquests dispositius treballen amb sistemes operatius a temps real. Es solen instal·lar en sistemes de control dels automòbils, infraestructures inalàmbriques, impressores, dispositius de xarxa,... dispositius que en definitiva necessiten rapidesa entre l'entrada i sortida d'un sistema.
Sèrie M:
Aquesta sèrie va dirigida a sistemes encastats (embedded Systems). Els sistemes encastats normalment sempre desenvolupen la mateixa tasca i necessiten fer-la a molt baix consum. Alguns exemples on s’instal•len aquests dispositius són: sistemes de control de motors, electrodomèstics, sensors,...
Sèrie securecore:
Aquests xips van adreçats a instal·lar-se en dispositius d’ús quotidià en que es necessita una certa robustesa. De fet s’instal•len en les SIM’s dels telèfons mòbils, targetes de crèdit, al DNI espanyol, sistemes avançats de pagament,...

Els nuclis[modifica | modifica el codi]

Família Nucli Característica Cache (I/D)/MMU MIPS MHz Ús
ARM7TDMI ARM7TDMI (-S) segmentació de 3 etapes cap 15 MIPS 16,8 MHz Game Boy Advance
ARM710T MMU
ARM720T 8KB unificats, MMU
ARM740T MPU
ARM7EJ-S Jazelle DBX sense
ARM9TDMI ARM9TDMI segmentació de 5 etapes sense
ARM920T 16KB/16KB, MMU 200 MIPS 180 MHz Consola GPX2, Calculadores HP-49/50
ARM922T 8KB/8KB, MMU
ARM940T MPU
ARM9E ARM946E-S variable, memòries altament acoblades, MPU Nintendo DS
ARM966E-S sense cache, TCMs
ARM968E-S sense cache, TCMs
ARM926EJ-S Jazelle DBX variable, TCMs, MMU
ARM10E ARM1020E (VFP) 32KB/32KB, MMU
ARM1022E (VFP) 16KB/16KB, MMU
ARM1026EJ-S Jazelle DBX variable, MMU o MPU
ARM11 ARM1136J (F)-S SIMD, Jazelle DBX, (VFP) variable, MMU Motorola Z6
ARM1156T2 (F)-S SIMD, Thumb-2, (VFP) variable, MPU
ARM1176JZ (F)-S SIMD, Jazelle DBX, (VFP) variable, MMU+TrustZone 420 MHz iPhone
ARM11 MPCore 1/4 nuclis SMP SIMD, Jazelle DBX, (VFP) variable, MMU
Cortex Cortex-M3 Microcontroller profile sense cache, (MPU)
Cortex-A8 NEON, Jazelle RCT, Thumb-2 variable (L1+L2), MMU+TrustZone fins a 2000 (2.0 DMIPS/MHz velocitats des de 600 MHz fins a més de 1 GHz) Pandora (consola)
Cortex-A9 Nuclis múltiples o simples, fins a 4 nuclis. NEON, Thumb ® -2, TrustZone, Jazelle, CoreSight L2 fins a 2 MB Més de 8000 Dhrystone MIPS agregats a 1 GHz IPADE (Apple A4)
XScale 80200/IOP310/IOP315 Processador d'entrada/sortida
80.219
IOP321
IOP33x
PXA210/PXA250 Processador d'aplicacions
PXA255
PXA26x
PXA27x 800 MIPS 624 MHz
PXA800 (E) F
Monahans 1000 MIPS 1,25 GHz
IXC1100 Processador de control de pla
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x
IXP460/IXP465

Disseny[modifica | modifica el codi]

El joc d'instruccions del ARM és similar al del MOS 6502, però inclou característiques addicionals que li permeten aconseguir un millor rendiment en la seva execució. Per mantenir el concepte tradicional de RISC, es va incloure l'ordre d'execució en un temps bastant bo, i en general, en un cicle. La característica més interessant és l'ús dels 4 bits de codi condicional a la part superior de cada instrucció, fent que cada instrucció pugui ser una condició.

Aquest tall permet augmentar l'espai per a alguns desplaçaments en l'accés a la memòria, però també permet evitar caure en cicles fora de control quan l'aplicació sigui per a petites instruccions condicionades. L'exemple estàndard és el màxim comú divisor, segons l'algorisme d'Euclides.

Exemple a C

int GCD (int i, int j)

{

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

}

Expressat en codi assemblador ARM, el cicle, amb una petita rotació, permet veure una cosa similar a això

b test
loop subgt Ri, Ri, Rj
sublevat, que tenien Rj, Rj, Ri
test cmp Ri, Rj
BNE loop

el qual permet girar al voltant de la condició.

Una altra característica única del joc d'instruccions és la possibilitat d'afegir shifts i rotar en el processament de dades (aritmètic, lògic i moviment de registres), per exemple, la instrucció en C "a+= (j <<2);" pot ser millorada com una instrucció simple en l'ARM, permetent la reubicació del registre.

Tot això fa que es necessitin menys operacions de càrrega i emmagatzematge, millorant el rendiment.

El processador ARM també té algunes característiques que són rares en altres arquitectures també considerades RISC, com l'adreçament relatiu, i el pre i post increment en el mode d'adreçament.

Té dos modes de funcionament: l'Armi amb instruccions que ocupen 4 bytes, més ràpides i potents (hi ha instruccions que només estan en aquesta manera) però amb major consum de memòria i d'electricitat. I la manera THUMB, més limitat, amb instruccions que ocupen 2 bytes i amb menor consum de corrent

ARMv8[modifica | modifica el codi]

És la última versió de l'arquitectura ARM. Aquesta arquitectura es veurà implementada directament amb els processadors ARM Cortex-A57 i Cortex-A53 que l'empresa ARM Holdings ha tret el 2014 al mercat. L’arquitectura dels ARMv8 (darrera versió), ofereix compatibilitat entre l’arquitectura de 32 i 64 bits. Per fer-ho permet 2 estats diferents d’execució. En l’execució de 64 bits utilitza els registres de 64 bits i suporta el conjunt d’instruccions anomenat A64. En canvi, l’execució de 32 bits utilitza els registres de 32 bits i suporta el conjunt d’instruccions de A32. El conjunt d'instruccions A32 també inclou un conjunt més petit d'instruccions de mida més petita anomenat Thumb.
ARMv8 té 3 tipus d’arquitectures:

  • Una que permet la virtualització de memòria a traves de la MMU i pot utilitzar tant les instruccions A64, A32 i T32 (convencional i més freqüent).
  • Perfil de temps real: basa l’arquitectura en la protecció de la memòria amb una Memory Protection Unit (MPU).
  • Perfil de Microcontrolador: implementa el model d’interrupcions de baixa latència i suporta les instruccions T32.

L’execució AArch64 ofereix 31 registres de propòsit general que s’anomenen Xn en que n és el nombre de registre. El registre X30 s’utilitza com a link register. En aquests 31 registres també hi tenim el PC, SP (stack pointer) i ELRs (exception link registers). També tenim en l’execució A64 on 3 registres de l'EL0 – EL3 per implementar els privilegis d’execució. Les instruccions A64 són instruccions de mida fixa que utilitzen codificacions de 32 bits.
L’execució AArch32 ofereix 32 registres de propòsit general de 32 bits entre els que es troben el PC, SP i LR (link register) que fa la funció de registre ELR i PLR (Procedure link register). La execució també compta amb 32 registres de 64 bits per instruccions SIMD avançades de coma flotant. L’execució AArch32 suporta les instruccions A32 i T32. La diferència és que les A32 tenen mida fixa i es codifiquen en 32 bits, en canvi les T32 tenen mida variable i utilitzen tant 32 bits com 16 bits. Les instruccions de 16 bits són les anomenades Thumb. No ha sigut fins a aquesta versió que han aparegut també registres de 64 bits que en assemblar es diferencien amb la lletra X ja que els de 32 bits són W.[1]
La arquitectura ARMv8 suporta dades de tipus:

  • Byte -> 8 bits
  • Halfword -> 16 bits
  • Word -> 64 bits
  • Doubleword -> 64 bits
  • Quadword -> 128 bits

També suporta dades en coma flotant de diferents tipus i diferents opcions en els registres per executar operacions SIMD amb elements de mida variable en el vector de 128 bits. Els elements dels vectors SIMD poden ser de 8, 16, 32 i 64 bits.

Tecnologies[modifica | modifica el codi]

Thumb[modifica | modifica el codi]

Les instruccions Thumb s'han utilitzat en els condicionals. Aquest conjunt d'instruccions pretén disminuir la quantitat de codi escrit, millorar la densitat del codi i aconseguir un rendiment superior a un codi de 32 bits on el port de memòria o amplada del bus de comunicacions són menors a 32 bits. En general en aplicacions s'insereix un petit rang d'adreces de memòria amb un datapath de 32 bits (per exemple: Game Boy Advance), i la resta són 16 bits en mode wide o narrower.

La primera CPU amb la tecnologia Thumb va ser el ARM7TDMI. Tota la família posterior a l'ARM9, incloent el processador Intel XScale, tenen incorporada la tecnologia en el seu nucli.

El 2003 conincidint amb la sortida de ARMv7 va sortir també el conjunt d'instruccions Thumb-2 que extenia el conjunt d'instruccions en versions prèvies però que segueix tenint la mateixa missió.

TrustZone[modifica | modifica el codi]

Part del hardware que proporcionen seguretat en aquest. En alguns dispositius com tablets o smartphones s’executen instruccions d’aplicacions baixades d’internet que a vegades inclouen software maliciós. Pretén reduir l’accés a certes parts del hardware per evitar errors, accés a dades de memòria,...

Jazelle[modifica | modifica el codi]

ARM té implantada una tecnologia que permet que certs tipus d'arquitectures executin Java bytecode nativament al maquinari. La primera CPU en utilitzar Jazelle va ser el ARM926EJ-S, sent anomenats amb una J a tots els processadors que suportessin aquesta tecnologia.

VFP[modifica | modifica el codi]

Conjunt d’instruccions per millorar les possibilitats d’operar amb coma flotant en diferents precisions. Normalment s’utilitza en aplicacions en automobilisme (ABS, control de tracció i suspensió), gràfics 3D, tractament d’imatges (impressores i càmeres digitals) o per controlar sistemes industrials a temps real. Les arquitectures ARM ja porten VFPv2 de de la versió ARMv5.

SIMD[modifica | modifica el codi]

Instruccions (Single Instruction Multiple Data) que millora l’speedup en operacions lògiques o aritmètiques. La millora NEON SIMD és una extensió de 128 bits en els ARM de la sèrie A. Estan pensats per accelerar els càlculs en els jocs, reproducció de vídeo, so,... Com en totes les instruccions ARM permet l'execució d'operacions aritmeticològiques en diferents elements d'un vector de manera paral·lela.

Enllaços externs[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Advanced RISC Machines Modifica l'enllaç a Wikidata

Referències[modifica | modifica el codi]

  1. ARM, Architecture department. "Architecture Reference Manual ARMv8", 2014.