Download Introducción Índice ARM ARM es un juego de instrucciones y una

Document related concepts
no text concepts found
Transcript
Introducción
Índice
ARM
ARM es un juego de instrucciones y una
microarquitectura RISC desarrollados en un
principio por Acorn Ltd, y actualmente por ARM
hodings. La empresa da licencias de uso y
modificación de este juego de instrucciones a quien
las compre, y son estas empresas las que producen
los procesadores finales, basados en la licencia
original y optimizados para la aplicación que
requiera el productor.
Este es el principal problema a la hora de medir la
productividad y el rendimiento de los procesadores
ARM, ya que varia entre muchísimos procesadores
distintos. Aún así, la propia página de ARM
proporciona datos usando las arquitecturas sin
modificar y benchmarks estandar, que son los que
usaremos en la presentación.
Los ARM se basan en utilizar la mínima cantidad de
recursos posible: en 1987, el ARM2, el primero comercial, tenia solo 30.000 transistores, la mitad
que los demás procesadores comerciales e la época. Esta metodología de diseño es la principal
razón de que los ARM sean muy aptos para uso con bajo consumo de potencia.
Actualmente las arquitecturas ARM han avanzado hasta contar con multicores, sistem-on-chip,
frecuencias comparables a las de procesadores de alto rendimiento, cauces superescalares, y otras
características más propias hasta ahora del alto rendimiento que del bajo consumo.
Bajo consumo en el ARM
La principal razón del bajo consumo de os ARM es su diseño buscando la mayor sencillez posible a
costa de hardware de altas prestaciones. Por ejemplo, las instrucciones se compilan con códigos de
condición para evitar usar un predictor de salto, la ALU puede desplazar lógica o aritméticamente
sin coste de tiempo alguno, el cauce de ejecuciones es constante para todas las instrucciones, no usa
microcódigo, y otras características. Las arquitecturas más actuales por otra parte, implementan
muchas funciones de altas prestaciones, pero como la base del diseño se mantiene en su sencillez,
los procesadores siguen sin consumir grandes cantidades de potencia.
Otra gran razón de su bajo consumo es el rango de frecuencias en las que trabajan. Típicamente un
core de la arquitectura v4 (ARM7TDMI) trabaja solo a 60-150 MHz, por lo que el consumo de
potencia (proporcional a la frecuencia al cuadrado) es muchísimo menor que en un procesador a
varios GHz. Las arquitecturas más modernas admiten hasta 2 GHz de frecuencia, con lo que su
consumo es más elevado, pero aún menor que los procesadores de alta gama.
Microarquitecturas de ARM
Existen numerosas arquitecturas ARM distintas, según los usos para las que han sido pensadas, las
características extra, y su antigüedad. En esta sección tratamos de resumirlas para comprobar que es
un juego reducido y eficiente.
Las arquitecturas v1 a v4, con numerosas variaciones cada una, son las bases de todos los
procesadores desde el ARM2, el ARM4, el ARM5, ARM6 y ARM7, también con todas sus
variaciones. Esta arquitectura tiene tres etapas de pipeline, como se ve en la figura relacionada. Es
constante para todas las instrucciones excepto para los loads múltiples usados para salvar el estado
de la máquina.
Ademas el desplazador esta en serie con el resto e la ALU, y se ha implementado de forma que no
aumenta el tiempo de ejecución, por lo que se reduce el número de instrucciones para hacer una
operación. Esto implica un código denso y menos accesos a memoria. También ayuda a que el
número de accesos baje el que todas las instrucciones sean de longitud constante, lo que simplifica
la lógica del contador de programa. Los accesos a memoria
se reducen aún más al implementarlos relativos al contador
de programa o a otro registro, lo que permite una
indexación precisa y un amplio rango de memoria
accesible sin redirecciones.
Por último, el principal rango de esta arquitectura es su
ejecución condicional integrada en la decodificación. Las
instrucciones se compilan con códigos de condición
referentes al registro de estado, que se comprueban para
saber si la instrucción debe ejecutarse. Los códigos son
complejos como para tener en cuenta todas las condiciones
lógicas posibles de ejecución condicional. Un ejemplo de
instrucción condicional se puede ver en el siguiente
extracto de código, puesto como ejemplo en la wikipedia:
loop CMP
(i != j),
Ri, Rj
; set condition "NE" if
;
"GT" if (i > j),
;
or "LT" if (i < j)
SUBGT Ri, Ri, Rj ; if "GT" (greater than), i = i-j;
SUBLT Rj, Rj, ir ; if "LT" (less than), j = j-i;
BNE
loop
; if "NE" (not equal), then loop
A partir de la arquitectura v4 los ARM admiten un modo de instrucciones reducido llamado Thumb.
En este modo las instrucciones son de 16 bits en lugar de 32, luego es una segunda arquitectura
unida a la del modo full. La ventaja de esta segunda arquitectura es que produce un código mucho
más denso que el modo normal al compilar, algo muy útil cuando el procesador está destinado a ser
un microcontrolador con poca memoria y una batería de poca potencia.
Como a lo largo de los años la arquitectura ha aumentado hasta ser demasiado grande para un
procesador tan simple como se pretende, la arquitectura v7 se divide en varios perfiles (aplicación,
tiempo real, y microcontrolador) que implican que solo implementan determinado subset del juego
de instrucciones. Con esto se sigue manteniendo un tamaño reducido y una alta simplicidad en el
diseño, lo que permite consumir menos potencia.
Esta arquitectura también admite el modo Thumb, pero evolucionado a la versión 2, en la que
algunas instrucciones son de 32 bits para intentar alcanzar un rendimiento y una productividad
parecida a la obtenida con el modo full, pero con un tamaño de código cercano al del modo Thumb.
Atom
Atom es el nombre de la nueva línea de
microprocesadores de baja potencia de Intel, y lleva en
diseño desde 2006 y en producción desde 2008. Hasta
la fecha la línea engloba 2 arquitecturas distintas: la
Silverthorne, con grandes ahorros de potencia y
pequeño tamaño adecuado para dispositivos móviles y
de mano, y la Diamondville, algo más grande y con
mayor consumo, adecuada para pequeños portatiles.
Bajo consumo en Intel Atom
Aunque Intel asegure que la linea Atom está
desarrollada desde cero, es lógico pensar que se basan
en su conocimiento previo de otras líneas de procesadores para diseñar los Atom. Si tenemos en
cuenta que el tamaño y número de transistores de los Atom es del triple como poco del de los ARM,
queda claro que el diseño es más una simplificación de los Intel de altas prestaciones que un diseño
desde cero.
La principal herramienta de disminución de consumo en los Atom es una lógica de control de
potencia ya común en otros procesadores Intel destinados a dispositivos portátiles como los
centrino, que trabaja como una máquina de estados finitos en la que cada estado implica unas
restricciones de uso y por tanto un cierto
ahorro de potencia. La máquina de estados
de la arquitectura Silverthorne se muestra a
continuación.
Los estados vienen definidos en los
datasheets de los procesadores con las
siguientes descripciones, simplificadas para
eliminar las señales o instrucciones que los
activan o desactivan:
C0: Estado normal de funcionamiento,
aprovechando todas las características del
procesador.
C1: Estados normales previos al Stop
Grant, producidos por instrucciones o
interrupciones.
Stop Grant State: Estado de no ejecución sin disminución de las características el procesador, usado
cuando todos los hilos que se procesan esperan interrupciones en poco tiempo (por ejemplo en
procesos multimedia), o cuando se debe llevar a cabo una actualización de la cache desde el disco
duro.
C2: Estado de bajo consumo en el que aunque se mantiene todo el contexto de la máquina, no se
ejecutan instrucciones. En este estado se responde ante cambios en el bus de datos o el de
interrupciones, por lo que es un estado activo.
C4: Sustituye al C3, y es un estado compuesto por los estados Sleep y Deep Sleep, en los cuales se
mantiene el contexto de la máquina pero se apagan los relojes y PLLs respectivamente, por lo que
no se puede responder a cambios en los buses. Por tanto este es un estado pasivo de gran ahorro de
energía.
C6: aunque no sale en el diagrama, las arquitecturas más modernas lo incorporan. En este estado, se
guarda el contexto de la máquina en una pequeña memoria con una alimentación menor e
independiente, lo que permite apagar totalmente el procesador, ahorrando muchísima energía.
Arquitectura del Atom
Los Intel Atom siguen la arquitectura común de la marca: externamente aceptan el juego de
instrucciones x86 de 32 bits, e incluso algunos el de 64. Internamente traducen estas instrucciones a
un microcódigo RISC que es el que ejecutan. Para estos procesadores se intenta con especial ahínco
que las instrucciones externas produzcan solo una instrucción interna, de manera que no disminuya
la productividad del procesdor.
Otras características de la arquitectura son su pipeline de 16 etapas, mostrada en la imagen de la
derecha. Este pipeline no incluye la
traducción a microcódigo, pues la
busqueda a la que se hace referencia en
el se realiza en la cache de primer nivel,
y el traductor está entre esta y la de
segundo nivel.
Por otra parte, el cauce de ejecución es
de 2 vias, por lo que permite un máximo
de 2 instrucciones por ciclo, aunque esto
solo se da en condiciones ideales. Para
aprovechar esta característica al máximo, los Atom implementan la tecnología hiperThreading
propia de Intel, lo que elimina las dependencias entre cauces.
Por lo demás, solo permiten ejecución en orden no especulativa, e implementan predicción de salto
Un diagrama de bloques de la arquitectura Solverthorne se puede ver en la imagen siguiente:
Comparativa
La primera comparativa que realizaremos será la de tamaño, para hacernos una idea de la relación
entre ambas familias de procesadores. Para empezar, según los datos de su página web, los Atom
actuales se fabrican con tecnologías de 45 nm y obtienen unos tamaños de 25 mm2. Suponiendo
razones de marketing al decidir las cifras que publican, supongo que este número es un mínimo de
la familia.
Por otra parte, para comparar los ARM se deben tener en cuenta modelos usuales tanto con
especificaciones de bajo consumo como de altas prestaciones. Por tanto la comparación la realizaré
con el ARM7TDMI, que actualmente se puede encontrar debajo de las piedras y tiene un consumo
muy bajo, y con un moderno Cortex-8A, con muchas más prestaciones pero también usado en los
dispositivos de más alta gama.
En cuanto a los datos, el ARM7TDMI tiene un tamaño de 0.18 mm2 cuando se fabrica con
tecnología de 90 nm, y el Cortex-8A consigue unos tamaños mínimos (también suponiendo que
publican los datos que mejor quedan en la página) de hasta 6 mm2, fabricados con tecnología de 45
nm.
La imagen siguiente muestra una relacion de tamaños para los casos considerados:
ARM7TDMI
Cortex-8A
Intel
Atom
La siguiente comparación es de frecuencias, para terminar de comprender los distintos usos a que
están destinados los procesadores que hemos elegido para comparar.
En la siguiente tabla se especifican los rangos de frecuencias en los que funcionan cada uno de los
procesadores de la comparación:
ARM7TDMI 115-233 MHz
Cortex-A8 650-1100 MHz
Intel Atom 1-1.8 GHz
Como se puede deducir al ver las dos comparaciones realizadas hasta ahora, la serie Atom es de
bajo consumo, pero no tiene nada que ver con procesadores diseñados por una empresa
íntegramente dedicada al bajo consumo. Por otra parte, en las siguientes comparaciones veremos su
rendimiento y productividad para ponderar la mejora con respecto al consumo de los procesadores.
La comparacion de potencia para los procesadores y rangos de frecuencias estudiados, siempre
según las páginas oficiales, se muestra en la tabla siguiente:
ARM7TDMI 3.45 - 6.99 mW
Cortex-A8 292.5 - 495 mW
Intel Atom 1-13 W
Por último, nos dirigimos a las páginas de los benchmarks más renombrados para obtener el
rendimiento de los procesadores en estudio. En EEMBC encontramos los datos que necesitamos
para los ARM, mirando en las entradas antiguas para el caso del ARM7TDMI. Los datos sobre el
Atom hay que buscarlos en la serie de baja potencia de los spec, debido a que se consideran de uso
general y no empotrados. Los datos obtenidos, redondeados entre las numerosas configuraciones
probadas en los benchmarks, se muestran en la siguiente tabla:
ARM7TDMI 103.5 - 209.7 DMIPS
Cortex-A8 1300 - 2200 DMIPS
Intel Atom 2000 - 3500 DMIPS
Conclusión
Con los datos que hemos recopilado llegamos a la conclusión de que no estamos ante el mismo tipo
de procesadores, es decir, que aunque los dos se llamen de bajo consumo, los ARM son de bjo
consumo real, utilizados para dispositivos empotrados, móviles y no muy punteros, mientras que los
Atom son una gama apta para el ahorro de potencia de procesadores Intel de altas prestaciones.
Una vez sabido esto, si los pusiéramos en iguales condiciones (mismo dispositivo y mismo uso),
con el ARM7TDMI tendríamos problemas para ejecutar la mayoría de instrucciones multimedia
actuales (decodificación de mp4, acceso a redes wifi, …), con el Cortex-8A, podríamos ejecutar
cualquier software actual, y obtendríamos un consumo de potencia bajo, y por último con un Atom,
la mejora en el rendimiento que experimentaríamos no es proporcional al consumo extra de
potencia, por lo que el Cortex-8A es más eficiente. Por otra parte, está claro que el Atom está
pensado inicialmente para propósito general, mientras que el Cortex-8A es una optimización de una
arquitectura embebida, por lo que puede haber mejoras en la compilación y ejecución en el Atom no
contempladas que aumenten la mejora de rendimiento al cambiar del Cortex-8A al Atom.
Bibliografía
en.wikipedia.org/
www.arm.com/products/CPUs/
www.intel.com/technology/atom/
www.spec.org/
www.eembc.org/
Yeray Hernandez Suarez, “Intel Atom” (presentación para la asignatura Microprocesadores para
Comunicaciones), 2009