06:13 1 de 22
Andrés Djordjalian <[email protected]>Seminario de Sistemas Embebidos
19 de mayo de 2011Facultad de Ingeniería de la UBA
Tecnologías y ArquitecturasParte II
06:13 2 de 22
Temas de esta ClaseMedición de performance
Dhrystone MIPS y mejores benchmarks
Arquitecturas de gama altaSuperescalares, VLIW, memorias caches y MMU
¿Preguntas? ¡Gracias!
06:13 3 de 22
Medición de PerformanceVelocidad = cant._de_procesamiento / tiempoMIPS (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 C1. 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 4 de 22
DhrystoneProblema: ¿Qué programa usar como benchmark?Dhrystone (1984)
Se lo usa mucho, aunque es cuestionado porque:1. Es pequeño, utiliza poca memoria2. No hace procesamiento en punto flotante3. No es representativo de las aplicaciones actuales4. 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 DMIPSA una máquina que corre Dhrystone n veces más rápido que la VAX, se le atribuyen n DMIPSFrecuentemente se le dice MIPS a secas• Pero no confundirlo con el otro MIPS (pico)
06:13 5 de 22
Ejemplos
45ARM Cortex-M0 a 50 MHz
159000Intel Core i7 EE-990x (6 cores) a 3,46 GHz
3200Intel Atom-Z530 a 1,6 GHz
2000ARM Cortex-A8 a 1 GHz
125ARM Cortex-M3 a 100 MHz
5,9ATmega32A (AVR, 8 bits, 16 MHz)
DMIPS (aprox.)Procesador
(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 6 de 22
MFLOPSMFLOPS (megaflops) = Millones de instrucciones de punto flotante por segundoEs 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 nativasPero ¿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 flotanteCuando un procesador incluye una unidad de punto flotante, aumenta mucho su performance medida en MFLOPS
06:13 7 de 22
Mejores BenchmarksSPEC CPU
Estándar para medir performance de computadorasRegularmente actualizado. La versión más reciente es CPU2006Es 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
BDTIPara productos que hacen procesamiento digital de señales (DSP).
06:13 8 de 22
Actividad1. ¿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 9 de 22
Temas de esta ClaseMedición de performance
Dhrystone MIPS y mejores benchmarks
Arquitecturas de gama altaSuperescalares, VLIW, memorias caches y MMU
¿Preguntas? ¡Gracias!
06:13 10 de 22
Segmentación (Pipelining)
CMP R5,R6BEQ SonIgualesADD R5,R5,R4
ADD R5,R6,R7SUB R4,R4,R5
Ejemplos decódigo Assembly:
LDR R1,[R0]LDR R3,[R2]ADD R1,R1,#200
Repaso
06:13 11 de 22
Segmentación (Pipelining) Repaso
06:13 12 de 22
Multiple Inicio de InstruccionesComo vimos, un pipeline procesa varias instrucciones al mismo tiempo, pero en cada ciclo sólo se inicia unaPero 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 13 de 22
Superescalares y VLIW
tiempo
flujo de instrucciones
Se inician de a dos
Una instrucción
Otra
06:13 14 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 15 de 22
Memorias CacheLa 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 cacheUn cache de nivel 1 (L1) pequeño y bien rápidoUn cache de nivel 2 (L2) más grande, aunque más lentoQuizás, un L3…Las cache L1 y L2 suelen estar en el mismo chip del procesador
06:13 16 de 22
Memorias CacheEl 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 17 de 22
ARM Cortex A832 bits
Arquitectura RISCISA ARM (32 bits) y Thumb-2 (16/32 bits)
desde 600 MHz hasta más de 1 GHzSuperescalar (2 issue)
Lanzado en 2009Pipelines de 13 etapas
Caches L1: split, 16KB o 32 KB c/uCache L2: 64 KB a 2 MB
2 DMIPS/MHzExtensión para
multimedia: NEON Por unos u$s 50 se
compra un TI OMAP 3515(= Cortex A8 a 600 MHz
+ un DSP)
06:13 18 de 22
Intel AtomZ530
32 bitsISA x86 (PC compatible) pero
con núcleo RISC1,6 GHz
Superescalar (2 issue)Lanzado en 2008
Pipelines de 16 etapasCaches L1: split, 32 KB (I) + 24 KB (D)
Cache L2: 512 KBExtensión para multimedia: SSE3
Máx TDP (thermal design power): 2 WVcore = 1,1 V2 DMIPS/MHz
Fabricado con un proceso de 45 nmCuesta aprox. u$s 50
06:13 19 de 22
ARMCortexA9
06:13 20 de 22
06:13 21 de 22
Con sistemas operativos (tipo Linux) se pueden correr varios procesos “simultáneamente”.
El mapeo lo hace una combinación de HW y SWAl 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
Memoria Virtual y MMU
Memoria del Proceso A
…del B
…del C
mapeo
Almacenamientode las “Páginas”de la Memoria
Virtual
Memoria VirtualMemoria Física
06:13 22 de 22
Temas de esta ClaseMedición de performance
Dhrystone MIPS y mejores benchmarks
Arquitecturas de gama altaSuperescalares, VLIW, memorias caches y MMU
¿Preguntas? ¿Comentarios? ¿Etc.?¡Gracias!