Tecnologías y Arquitecturas Parte II Andrés Djordjalian <andres@indicart.com.ar> Seminario de Sistemas Embebidos 19 de mayo de 2011 Facultad de Ingeniería de la UBA 06:13 1 de 22 Temas de esta Clase Medición de performance Dhrystone MIPS y mejores benchmarks Arquitecturas de gama alta Superescalares, VLIW, memorias caches y MMU ¿Preguntas? ¡Gracias! 06:13 2 de 22 Medición de Performance Velocidad = cant._de_procesamiento / tiempo MIPS (pico) = millones de instrucciones nativas por segundo No es una buena métrica, porque: 1. Las instrucciones individuales de diferentes ISAs no necesariamente hacen la misma cantidad de procesamiento. 2. Si MIPS se basa en la instrucción más rápida (ej., NOP), entonces dice poco sobre el procesamiento real. Como “cantidad de procesamiento”, mejor que instrucciones nativas es usar un programa …escrito en un lenguaje, por ejemplo C 1. así puede ser el mismo procesamiento, aunque los micros tengan diferentes conjuntos de instrucciones. 2. así puede emplearse un mix realista de instrucciones. A los programas que se usan para esto se los llama benchmarks 06:13 3 de 22 Dhrystone Problema: ¿Qué programa usar como benchmark? Dhrystone (1984) Se lo usa mucho, aunque es cuestionado porque: 1. 2. 3. 4. Es pequeño, utiliza poca memoria No hace procesamiento en punto flotante No es representativo de las aplicaciones actuales El micro puede ser optimizado para “hacer trampa” La versión actual es Dhrystone 2.1 (1988) Para expresar el resultado de Dhrystone, se usa DMIPS (Dhrystone [VAX] MIPS) Para fijar una referencia, a una minicomputadora VAX 11/780 se le asigna 1 DMIPS A una máquina que corre Dhrystone n veces más rápido que la VAX, se le atribuyen n DMIPS Frecuentemente se le dice MIPS a secas • 06:13 Pero no confundirlo con el otro MIPS (pico) 4 de 22 Ejemplos Procesador DMIPS (aprox.) ATmega32A (AVR, 8 bits, 16 MHz) 5,9 ARM Cortex-M0 a 50 MHz 45 ARM Cortex-M3 a 100 MHz 125 ARM Cortex-A8 a 1 GHz 2000 Intel Atom-Z530 a 1,6 GHz 3200 Intel Core i7 EE-990x (6 cores) a 3,46 GHz 159000 (Sin embargo, para que esta tabla fuera más precisa, convendría aclarar qué compilador se usó en cada caso, qué opciones de compilación y otros detalles de ese estilo.) 06:13 5 de 22 MFLOPS MFLOPS (megaflops) = Millones de instrucciones de punto flotante por segundo Es similar a MIPS pico, pero la instrucción en cuestión es de punto flotante Puede ser una instrucción nativa, o una operación codificada en varias instrucciones nativas Pero ¿de qué operación se trata, y con qué precisión? • Esas cosas no están bien definidas, lo que le quita mérito a la métrica Representa (imperfectamente) la performance del procesador para ejecutar programas de punto flotante Cuando un procesador incluye una unidad de punto flotante, aumenta mucho su performance medida en MFLOPS 06:13 6 de 22 Mejores Benchmarks SPEC CPU Estándar para medir performance de computadoras Regularmente actualizado. La versión más reciente es CPU2006 Es una serie de programas (i.e., un suite) y sus datos de entrada • Para integrar los resultados en uno solo, se usa la media geométrica Los programas se dividen en enteros y de punto flotante • Se reporta SPECint06 y SPECfp06 EEMBC (suena como embassy) Son varios suites de benchmarks, cada uno apunta a un área de aplicación de sistemas embebidos. • Ej.: Automotive, Consumer, Networking, etc. Tienen también uno genérico y gratuito: Coremark BDTI Para productos que hacen procesamiento digital de señales (DSP). 06:13 7 de 22 Actividad 1. ¿Qué métrica podríamos usar para densidad de código? O sea, algo que represente qué tanta memoria ocupan los programas para el procesador en cuestión 2. ¿Qué representa DMIPS dividido por frecuencia del ciclo de máquina? O sea que su unidad es [ DMIPS / MHz ] 3. ¿Qué métricas podríamos usar para el consumo? Discútanlo en grupos de 2 a 4 personas, en unos minutos comparamos las respuestas 06:13 8 de 22 Temas de esta Clase Medición de performance Dhrystone MIPS y mejores benchmarks Arquitecturas de gama alta Superescalares, VLIW, memorias caches y MMU ¿Preguntas? ¡Gracias! 06:13 9 de 22 Segmentación (Pipelining) Ejemplos de código Assembly: 06:13 LDR R1,[R0] LDR R3,[R2] ADD R1,R1,#200 CMP R5,R6 BEQ SonIguales ADD R5,R5,R4 Repaso ADD R5,R6,R7 SUB R4,R4,R5 10 de 22 Segmentación (Pipelining) 06:13 Repaso 11 de 22 Multiple Inicio de Instrucciones Como vimos, un pipeline procesa varias instrucciones al mismo tiempo, pero en cada ciclo sólo se inicia una Pero un procesador puede tener “n” pipelines, para iniciar “n” instrucciones por ciclo y lograr así más paralelismo Los pipelines puede ser iguales o no • Ej., uno para instrucciones aritméticas, otro para loads y stores • Si el procesador puede iniciar “n” a la vez, se le dice n-issue. Para esto, hay dos tipos de arquitectura, que difieren en dónde se decide qué instrucciones se van a iniciar en paralelo: Superescalar: Lo decide el procesador, en tiempo de ejecución • Se usa, por ej., en los procesadores de PC desde el Pentium, y en procesadores para embebidos de alta gama VLIW (Very-Long Instruction Word): Lo decide el compilador o el programador • Se usa, por ej., en los DSP de la serie C6x de Texas Instruments 06:13 12 de 22 Superescalares y VLIW flujo de instrucciones Una instrucción Otra Se inician de a dos tiempo 06:13 13 de 22 Un Pipeline Superescalar Pipeline del ARM Cortex A8 (Para un ejemplo de VLIW, ver DSP de la familia C6x de TI, como el que acompaña al Cortex A8 en la BeagleBoard.) 06:13 14 de 22 Memorias Cache La tecnología de las memorias no experimenta tanto incremento de velocidad como la de los procesadores A frecuencias altas, la velocidad de procesamiento empieza a estar dominada por las esperas hasta que responda la memoria. Para alivianar el problema, a veces se usan memorias cache Son memorias rápidas, puestas entre la memoria principal y el procesador. Conservan un subconjunto del contenido de la memoria principal • Gracias a la localidad espacial y temporal del software, con ese contenido se atiende la mayoría de los accesos que requiere el procesador. Frecuentemente, se usan varios niveles de cache 06:13 Un cache de nivel 1 (L1) pequeño y bien rápido Un cache de nivel 2 (L2) más grande, aunque más lento Quizás, un L3… Las cache L1 y L2 suelen estar en el mismo chip del procesador 15 de 22 Memorias Cache El cache L1 generalmente está dividido en cache de instrucciones y cache de datos Así, segmentos como IF y MEM del pipeline no compiten por el acceso a memoria. Las memorias cache tienen sus contras: Complican la predicción del tiempo de ejecución • Porque no se sabe si la información va a estar o no en cache. Ocupan superficie de silicio (=costo) Consumen energía Sin embargo, si la frecuencia de clock es alta, son imprescindibles para lograr buena performance. Foto del die (pastilla) del Intel Atom 06:13 16 de 22 ARM Cortex A8 32 bits Arquitectura RISC ISA ARM (32 bits) y Thumb-2 (16/32 bits) desde 600 MHz hasta más de 1 GHz Superescalar (2 issue) Lanzado en 2009 Pipelines de 13 etapas Caches L1: split, 16KB o 32 KB c/u Cache L2: 64 KB a 2 MB 2 DMIPS/MHz Extensión para multimedia: NEON Por unos u$s 50 se compra un TI OMAP 3515 (= Cortex A8 a 600 MHz + un DSP) 06:13 17 de 22 Intel Atom Z530 32 bits ISA x86 (PC compatible) pero con núcleo RISC 1,6 GHz Superescalar (2 issue) Lanzado en 2008 Pipelines de 16 etapas Caches L1: split, 32 KB (I) + 24 KB (D) Cache L2: 512 KB Extensión para multimedia: SSE3 Máx TDP (thermal design power): 2 W Vcore = 1,1 V 2 DMIPS/MHz Fabricado con un proceso de 45 nm Cuesta aprox. u$s 50 06:13 18 de 22 ARM Cortex A9 06:13 19 de 22 06:13 20 de 22 Memoria Virtual y MMU Con sistemas operativos (tipo Linux) se pueden correr varios procesos “simultáneamente”. Memoria Virtual Memoria Física Memoria del Proceso A …del B mapeo Almacenamiento de las “Páginas” de la Memoria Virtual …del C El mapeo lo hace una combinación de HW y SW Al bloque de HW que se ocupa de eso se le dice Unidad de Administración de Memoria (MMU) La memoria virtual tiene contras similares a las cache 06:13 21 de 22 Temas de esta Clase Medición de performance Dhrystone MIPS y mejores benchmarks Arquitecturas de gama alta Superescalares, VLIW, memorias caches y MMU ¿Preguntas? ¿Comentarios? ¿Etc.? ¡Gracias! 06:13 22 de 22