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