La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Evolución en las Arquitecturas de microcontroladores Nuevas tendencias estandarizadoras de procesadores embebidos, herramientas de software y debug,

Presentaciones similares


Presentación del tema: "Evolución en las Arquitecturas de microcontroladores Nuevas tendencias estandarizadoras de procesadores embebidos, herramientas de software y debug,"— Transcripción de la presentación:

1 Evolución en las Arquitecturas de microcontroladores Nuevas tendencias estandarizadoras de procesadores embebidos, herramientas de software y debug, y periféricos inteligentes Guillermo A. Jaquenod

2 Evolución en la arquitectura de microprocesadores
Consecuencias del avance tecnológico: tamaño, consumo, velocidad, costo Aplicaciones Comunicaciones, automatización y control Requerimientos: Software RTOS y stacks. Capacidad de cómputo! Hardware Analógicos Memoria RF G. Jaquenod –

3 Consecuencias del avance tecnológico
Las geometrías se reducen permanentemente en forma importante, se observa una escala decreciente 350nm, 250nm, 180nm, 90nm, 65nm, 35nm, 18nm…. Las ventajas son mucha mayor cantidad de transistores por chip, mayor velocidad Pero el costo del desarrollo de nuevas plantas capaces de fabricar componentes con esta tecnología también es enorme, por lo que inicialmente se justifican para dispositivos de alta complejidad (algunos millones de transistores por chip) Las plantas de fabricación existentes, cuyo costo ha sido parcialmente amortizado, a veces no pueden ser adaptadas a los nuevos procesos, y muchos de sus recursos pueden son utilizados para la fabricación de otro tipo de productos. Este proceso de reutilización de tecnologías previas es constante G. Jaquenod –

4 Nuevos usos de geometrías mayores
Las plantas aptas para procesos litográficos de geometrías mayores se benefician del mejor control de procesos obtenido por el aprendizaje El control de tamaños, espesor de deposiciones, etc., es más controlable Estas ventajas se acomodan especialmente a las aplicaciones lineales, y aquellas de tecnología mixta (analógica + digital) Dentro del área analógica deben considerarse: Etapas lineales de baja frecuencia (amplificadores) Etapas lineales de alta frecuencia (RF): LNA y PA Y en el área mixta: Conversores ADC, DAC Moduladores y demoduladores, para aplicaciones cableadas (USB, Ethernet, CAN) o inalámbricas (ISM) G. Jaquenod –

5 Áreas de avance: autonomía de dispositivos móviles
La autonomía de un dispositivo móvil es fundamental, y en general se busca también reducir peso y tamaño Ese objetivo se busca por distintos caminos: Mejores baterías, mas pequeñas. Otras fuentes de energía Comunicaciones y GUI de baja potencia Procesadores acordes a las necesidades de performance Tecnologías alternativas a CMOS para ciertos dispositivos Periféricos inteligentes Administración de energía G. Jaquenod –

6 Áreas de avance: energía disponible en el ambiente
Energy Harvesting: aprovecha energía disponible en el ambiente: Vibraciones: ideal en aplicaciones automotrices, Termoelectricidad: para aplicaciones medicas Energía solar Campos electro-magnéticos Los dispositivos deben tolerar amplios rangos de voltajes, y consumir cantidades mínimas de energía Existen fuentes de alimentación con voltajes de entrada tan bajos como 0,5V que lo elevan a 2,5V o 3,3V con alto rendimiento (mejor a 90%) Y tags RFID que capturan energía, como para alimentar a un procesador G. Jaquenod –

7 Memorias no volátiles de consumo nulo: FRAM
Mientras las E2ROM/FLASH capturan electrones en un conductor aislado (floating gate), por efecto túnel, acá se usa la formación de dipolos eléctricos biestables en una estructura cristalina El vector desplazamiento en el dieléctrico de un capacitor tiene comportamiento biestable El proceso de lectura detecta esa polarización forzando un cambio, y reescribe el dato leído (algo similar a la lectura en una RAM dinámica) Sin limitaciones de velocidad de pasaje de cargas que limiten el tiempo de escritura ni trampas de electrones que limiten la cantidad de ciclos de escritura Pb O Zr o Ti G. Jaquenod – 7

8 FRAM: performance Sin limitación práctica de ciclos de escritura, las hojas de datos hablan de más de 1014 ciclos ! La rapidez del ciclo de escritura garantiza que ésta se complete en caso de falla de energía El tiempo de escritura es dado por la lógica de selección y no por la celda de memoria; los tiempos son similares a los de una SRAM, menos de 50ns por byte o word No requiere alto voltaje como las E2ROM/FLASH (bastan 1.5V para escribir, vs 10V a 14V de una Flash/EEPROM) Amplio rango térmico: retención de más de ideal para aplicaciones automotrices Muy resistente a Radiación, los cambios inducidos por partículas alpha a nivel terrestre son indetectables Lo novedoso es que desaparece la diferencia conceptual entre RAM y ROM, todo es sólo “memoria”, una tarea puede dormirse al cortarse la alimentación y continuar cuando la energía retorna G. Jaquenod – 8

9 Periféricos inteligentes
En vez de periféricos simples que requieren la atención completa de la CPU el nuevo enfoque es el desarrollo de periféricos inteligentes Cada subsistema tiene control individual de energía Y sale y vuelve a entrar en modos de bajo consumo ni bien realiza la tarea para la que fue programado Pasa a ser un coprocesador disparado por un evento, que a su vez genera otro evento para avisar cuando termina de hacer lo que debe Permite que mientras tanto la CPU este en bajo consumo, o atendiendo alguna otra tarea. Solo se saca de StandBy a lo imprescindible, y además se simplifica la tarea de la CPU G. Jaquenod –

10 Conversores A/D inteligentes
En los procesadores modernos es usual contar con modelos que incluyen ADCs de 10-bit y 12-bit, con tasas de muestreo de algunos cientos de kilomuestras/segundo Para optimizar el consumo y aumentar performance es posible que un periférico (ej: timer) inicie la conversión Y que otro periférico (ej: DMA) guarde el resultado donde convenga Que las mediciones sigan una secuencia de uno o más canales El procesador sólo usa los resultados Direct Transfer Controller Data Transfer Controller Solo se saca de StandBy a lo imprescindible, y además se simplifica la tarea de la CPU Solo se saca de StandBy a lo imprescindible, y además se simplifica la tarea de la CPU G. Jaquenod –

11 Cambio del dominio analógico al digital: ADC de alta precisión
Ciertas aplicaciones masivas (por ejemplo medición de energía) requieren elevada precisión, a tasas de conversión de pocos ksps El uso de conversión Sigma/Delta se acomoda al mundo digital El filtrado de la señal de un comparador es realizado digitalmente mediante filtrado y undersampling La ganancia digital permite obtener conversores de 16 o más bits de resolución Dominio digital La ganancia de precisión se obtiene por técnicas de DSP, mas económico y con menor consumo G. Jaquenod –

12 Interfase GUI: controladores LCD
El uso de interfase gráficas hace más amigable y comercialmente más interesante a un producto El uso de displays LCD surge como la opción lógica debido al bajo consumo, desde displays monocromos de pocos segmentos (<200) hasta displays más complejos (color, QVGA a VGA) Combinado con un sensor “touch screen” permite una elevada interactividad Un LCD requiere de un ciclo de actualización permanente, y por eso suele ser un periférico inteligente en algunos procesadores, con memoria de imagen propia, o compartida con el procesador G. Jaquenod –

13 Canales de comunicación de datos
Cuando el procesador debe compartir datos con otros dispositivos existen alternativas cableadas o inalámbricas Las interfases cableadas más simples son UART, SPI o I2C. Y pueden ser potenciadas con recursos para soporte de enlaces infrarrojos (IrDA), procesos de autosincronización de relojes (auto-baud rate detect en LIN) A nivel intermedio algunos uC poseen interfases CAN o USB Y para alta tasas de transferencias ciertos procesadores tienen interfases Ethernet que incluyen el MAC y el PHY, que al igual que en los periféricos previos suelen operar combinados con timers y controladores DMA A medida que aumenta la tasa de datos, las secciones de hardware necesitan complementarse con servicios de software (stacks) G. Jaquenod –

14 Canales de comunicación de datos: RF
Para el caso de interfases de RF hoy se disponen de transceivers integrados que operan en las bandas ISM, en la zona de 400MHz, 900MHz o 2,4GHz, con muy bajo consumo de potencia. Esto es posible gracias a la posibilidad de integración de: Etapas lineales de amplificación de bajo ruido (LNA) para las etapas de entrada (RX) Etapas lineales de potencia tan elevada como 20 dBm dentro de un chip (TX). Con etapas digitales para conformación de señales y modulación, conversión a digital y FI y demodulación en el dominio digital, periféricos para armado de paquetes, agregado y validación de códigos de detección de errores, los métodos de sincronización, etc. Estas soluciones definen un amplio abanico de protocolos, desde aquellos propios hasta los estándar (como ZigBee). G. Jaquenod –

15 Stacks de comunicaciones
A partir de la aparición de normas como LIN, CAN, USB, Ethernet o de RF, no basta con disponer de un periférico que atienda la interfase física (PHY): En este caso el intercambio de datos es complejo, se compone de una “transacción”, que requiere fases de sincronización, arbitraje (si hay varios másters), identificación (del iniciador y destinatario), numeración (para rearmado de grandes bloques de datos fuera de secuencia), transmisión de datos (payload), incorporación de códigos de detección o corrección de errores, y cierre de transacción. Y requiere servicios auxiliares, de control de tráfico, descubrimiento y numeración de nuevos agentes, o administración de canales virtuales (manejando métodos de recuperación ante errores) El periférico cubre una parte de esas acciones, y el resto suele ser resuelto por software, a través de un “stack”. Y para atender ese software, y las otras necesidades de la aplicación, suele ser necesario algún tipo de administrador (Sistema Operativo) multi-tareas de tiempo real, o RTOS. G. Jaquenod –

16 Requerimientos de procesamiento
Las necesidades de procesamiento han llevado a la conveniencia de procesadores de gran ancho de palabra Al disponer de 16 a 32 bits en la instrucción se minimizan los ciclos de acceso Las instrucciones pueden incluir mas información sobre operandos, incluyendo las referencias a dos o mas operandos y el resultado Y el ISA es diseñado pensando en aplicaciones en lenguajes de alto nivel, que se ejecutan administradas por sistemas operativos La tendencia obvia es el uso de arquitecturas RISC Y pasa a ser de importancia cuanto del tiempo de CPU se ocupa procesando datos y cuanto es el overhead de las estructuras de control G. Jaquenod –

17 Overhead en una ramificación condicional IF con ELSE
Two-Way branch En casi todos los lenguajes de mayor nivel existen instrucciones de ramificación condicional más poderosas, de la forma: SI (cierta condición es verdadera) ENTONCES ejecuta cierta acción SINÓ SI (otra condición es verdadera) ENTONCES ejecuta otra acción SINO SI ... SINÓ ejecuta otra acción En inglés if (condición1) then (acción1); elsif (condición2) then (acción2); else (acción3); TRUE (IF) Condición? Condición? FALSE (ELSE) Instrucciones 1 Instrucciones 2 dependencia temporal Operación que define algo Ramificación condicional Ramificación condicional Acción 1 Ramificación incondicional Acción 2 Notar que son combinaciones de ramificaciones condicionales e incondicionales!! Tarea del compilador!! G. Jaquenod –

18 Overhead en SWITCH, SELECT o CASE
Multi-Way branch Cómo mejorar el Multi-Way Branch? Cómo mejorar el Multi-Way Branch? Constante1 Constante2 Constante3 Restantes Valor? Es usual que un programa deba saltar a distintos puntos según distintos valores de una misma variable SWITCH (variable) CASE (constante1) : acción 1 CASE (constante2) : acción 2 CASE ... DEFAULT: acción N Las sentencias de selección múltiple son comunes en todos los lenguajes de alto nivel, sólo se llaman distinto Acción 1 Acción 2 Acción 3 Por defecto Instrucciones1 Ramif.incond. Instrucciones2 Ramif.incond. Instrucciones3 Ramif.incond. Instrucciones4 G. Jaquenod –

19 Overhead en el caso de repeticiones o iteraciones
En muchísimos casos es necesario realizar una acción una dada cantidad de veces Para ello: Se inicializa una variable a ser usada como contador Se ejecuta una vez la acción Se decrementa el contador y .. Si el contador no llegó a cero, se salta a ejecutar otra vez la acción Si en cambio el contador llegó a cero se continúa la ejecución secuencial En muchos lenguajes de programación de alto nivel se usa para esto una instrucción for Ya algunos viejos microprocesadores (8051) incluían DJNZ (Decrement and Jump if Not Zero) para reducir el overhead Inicialización Instrucción 1 Instrucción n overhead tiempo útil Instrucción de cierre Terminé? no si Ramificación condicional!! G. Jaquenod –

20 Ventajas y desventajas de la arquitectura Von Neumann
Mundo Exterior Memoria Interfaz de Entrada y Salida Programa 1 Datos 2 Datos e instrucciones comparten el mismo espacio de memoria Usan un mismo direccionamiento (bus de direcciones) y transporte de contenidos (bus de datos) Hardware menor, pero mas ciclos para realizar una tarea Periféricos CPU Unidad Aritmética y Lógica Unidad de Control n En que casos conviene? En que casos conviene? A D G. Jaquenod –

21 Un microcontrolador tipo Harvard (relajado)
Mundo Exterior Interfaz de Entrada y Salida Memoria De datos 1 Es usual usar memoria no volátil para el espacio de programa y volátil (RAM) para el de datos En este caso ciertos datos pueden ser leídos de memoria de programa con instrucciones especiales Permite tener datos no volátiles (constantes) Mas hardware pero menos ciclos de reloj 2 CPU Periféricos Unidad Aritmética y Lógica Unidad de Control n Memoria de Programa En que casos conviene? G. Jaquenod –

22 Alternativas de arquitecturas: Bridges
Un bridge es un intermediario entre dos buses Estos pueden ser similares o responder a distintos mecanismos de control Y a ambos lados del bridge suceden transacciones al mismo tiempo Pueden tener distintos tamaños de datos y modos de almacenamiento temporario Son comunes los bridges a periféricos y a memorias masivas Memoria externa A D A D Memoria Interfaz de Entrada y Salida Programa Bridge Datos Periféricos CPU Unidad Aritmética y Lógica Bridge Unidad de Control Puede ser Harvard, Von Neuman, u otras En que casos conviene? G. Jaquenod –

23 Mejoras de la arquitectura básica
Consumo de potencia: en aplicaciones alimentadas por baterías (celular, IPhone, Notebook) es importante que el consumo de energía sea mínimo para que las baterías permitan la máxima autonomía Uso de menores voltajes: P = (K x V)(estática) + (f x C x V2 / 2) (dinámica) Control de energía individual de recursos no usados (V) Sistemas de control de reloj (f) Modos de bajo consumo de la CPU (sleep, Halt, etc.) (f) Performance: en aplicaciones de cómputo y alta performance (comunicaciones, procesamiento de datos o imágenes) se desea la máxima cantidad de instrucciones por segundo Procesadores múltiples Múltiples buses y bridges Memorias cache Pipelining + predicción de ramificaciones Optimización de cambios de contexto Y en los proyectos modernos se quieren ambas mejoras: Performance y bajo consumo de energía G. Jaquenod –

24 Procesadores múltiples
Arbiter Los procesadores se diseñan para optimizar su desempeño ante distintos tipos de problemas. Puede convenir que varios procesadores convivan en un mismo sistema. Y usen recursos propios o comunes Distintos procesadores Recursos compartidos Decoder Por ejemplo, en un celular: Un procesador general para la interfase a usuario Un procesador de señales para las tareas de comunicaciones Un procesador gráfico para la captura y compactación de imágenes y video Un procesador de audio para reproducir música G. Jaquenod –

25 Procesadores múltiples: Buses y Switches
Master1 Master2 Slave1 Slave2 Un bus (direcciones más contenido) sólo puede transportar en un dado instante un dato desde un origen a uno o más destinos (realizar una transacción) Si varios procesadores desean realizar transacciones deben esperar su turno para evitar colisiones (contention) Un switch permite que varias transacciones con orígenes y destinos diferentes puedan ser realizadas simultáneamente Aumenta la tasa de intercambio de datos, a costa de mayor complejidad del circuito Sigue siendo necesario arbitrar los accesos a recursos comunes BUS Master2 debe esperar Master1 Master2 SWITCH Slave1 Slave2 G. Jaquenod –

26 Memorias “cache” En un sistema de procesamiento suele darse en el uso de la memoria los fenómenos de: localidad temporal: si se referencia a un elemento en un instante, es muy probable que se volverá a referenciarlo en corto tiempo localidad espacial: si se referencia a un dado elemento, es muy probable que los ubicados próximos a él serán referenciados pronto Esto lleva a la conveniencia de organizar una jerarquía de memoria: Una memoria pequeña y rápida (“cache”) organizada de a bloques (nivel superior) Una memoria masiva de acceso más lento (nivel inferior de la jerarquía) El uso de cache de datos implica problemas de coherencia y es útil para aplicaciones muy complejas, en cambio el uso de cache de instrucciones, que son RO, es una solución mucho mas simple y ofrece ventajas de performance G. Jaquenod –

27 Evolución de la CPU: para qué más registros?
Al haber varios registros se puede almacenar varios resultados intermedios sin necesitad de salvarlos en memoria (bottleneck del AC único) Si los registros contienen tanto datos como direcciones se generan nuevos posibles modos de direccionamiento Al estar dentro de la CPU se pueden realizar instrucciones mucho más veloces, con origen y destino en registros, de acceso simultáneo (dual port) Es posible reservar registros para ciertas tareas (Ej: interrupciones) y de ese modo acelerar y simplificar los cambios de contexto 16 a 20 bits R0/PC Program Counter R1/SP Stack Pointer R2/SR Status Register R3/CG Constant Generator R4 General Purpose R5 General Purpose R6 General Purpose R7 General Purpose R8 General Purpose R9 General Purpose R10 General Purpose MAB: Memory Address Bus MDB: Memory Data Bus R11 General Purpose R12 General Purpose R13 General Purpose R14 General Purpose R15 General Purpose SRC DST 16 ALU de 16 bits 16 Y si uso un bus local? G. Jaquenod –

28 Un procesador elemental: beneficios de 16 bits vs 8 bits
En una instrucción de 16 bits caben campos para identificar un conjunto restringido de operaciones (5 a 6 bits), indicar cuáles son los registros fuente y destino (4 bits cada uno), y algún bit extra para funciones especiales (identificar modo de direccionamiento y si es una instrucción a byte o word, por ejemplo) Ello posibilita una instrucción por ciclo de reloj, si la operación es entre registros Cuando se usan operandos inmediatos, que no caben en los 16 bits, se usan soluciones originales, en este caso un registro R3 donde según los bits extra mencionados se lee una constante usual: 0, +1, -1, 2, 4, 8. 16 a 20 bits R0/PC Program Counter R1/SP Stack Pointer R2/SR Status Register R3/CG Constant Generator R4 General Purpose R5 General Purpose R6 General Purpose R7 General Purpose R8 General Purpose R9 General Purpose R10 General Purpose MAB: Memory Address Bus MDB: Memory Data Bus R11 General Purpose R12 General Purpose R13 General Purpose R14 General Purpose R15 General Purpose SRC DST 16 ALU de 16 bits 16 G. Jaquenod –

29 Buscando un procesador más poderoso: qué cosa mejorar?
Para obtener CPUs cada vez más poderosas se exploran muchos caminos Modos de direccionamiento que minimicen tiempos muertos Conjunto óptimo de instrucciones para cada relación silicio/performance Pipelining y Branch Prediction: uso simultáneo de varios bloques de la CPU Cache de instrucciones: mejorar tiempos de lectura de instrucciones Ancho de palabra (y lectura de varias instrucciones a la vez): usar palabras de más bits para mayor velocidad sin gastar más memoria de programa Cambios de contexto: mejorar tiempos de atención y retorno de subrutinas e interrupciones, minimizar tiempos de salvado y recuperación de registros Modos Operacionales: agregar modos de operación (usuario, excepción, supervisor) que faciliten la incorporación de sistemas operativos Bancos de registros: poseer múltiples registros que sirvan para datos y direcciones y que sean propios a cada modo de operación G. Jaquenod –

30 Procesadores avanzados: otros modos de direccionamiento
Además de los modos Absoluto, Indexado, Registro, Inmediato y Relativo al Stack, existen variaciones que aumentan la capacidad de procesamiento, aunque a costa de una unidad de direcciones más compleja: Base + Desplazamiento con automodificación, en memoria lineal: Dados tres registros Ra (base), Rb (desplazamiento) y Rc (cambio), la dirección del operando surge de la suma de los contenidos de Ra+Rb, y luego el valor de Rb se actualiza como Rb=Rb+Rc. Este modo acelera el acceso a tablas multidimensionales de datos. Base + Desplazamiento con automodificación, en memoria circular: en este caso las direcciones se actualizan de modo de reciclar sobre una región de memoria, tal como es necesario en buffers de comunicaciones Direccionamiento bit-reversal: usado en ciertos algoritmos, como FFT En los DSP hay varios buses de datos y varias unidades de direcciones. G. Jaquenod –

31 Buscando un procesador más poderoso: RISC versus CISC
Cuántas y cuáles instrucciones conforman el ISA de un procesador es un tema de permanente discusión. En procesadores para algoritmos específicos (DSP), es sensato contar con instrucciones especializadas en tareas complejas (FIRS, CONV). En procesadores de propósito general no es tan claro, y existe gran variedad de alternativas, desde procesadores con sólo algo más de veinte instrucciones nativas (RISC: Reduced Instruction Set Computer), a procesadores con cientos de instrucciones especializadas (CISC: Complex Instruction Set Computer). La tendencia actual es el uso de arquitecturas RISC, más primitivas pero más veloces, donde la acciones especializadas son resueltas por el compilador concatenando instrucciones simples. Por eso un RISC debe ser pensado para ser eficiente al ser compilado! G. Jaquenod –

32 Los primeros planteos de una arquitectura RISC
A partir de trabajos de Patterson y Ditzel (1980) en la Univ. de Berkeley se desarrolló un proyecto de postgrado sobre el diseño de un procesador con Conjunto de Instrucciones reducido. La primer propuesta (Berkeley RISC 1) fue una arquitectura mucho más simple que los procesadores CISC de esa época, pero que permitía similar performance. Sus características más notables eran: tamaño de palabra fija de 32 bits un banco de registros de 32 registros de 32 bits, todos ellos pudiendo ser usados indistintamente en todas las instrucciones el procesamiento es sólo realizado en registros, y el acceso a memoria es sólo para salvar o cargar registros uso de pipeline decodificación por lógica (no basada en microprogramación) G. Jaquenod –

33 Hacia un procesador más poderoso: uso de pipeline
El pipeline descompone una instrucción en acciones elementales de duración temporal parecida, y asigna recursos físicos distintos para cada una, a los que luego usa en simultáneo. Por ejemplo: Cuantos niveles conviene tener?? Generación de dirección de programa Lectura de la instrucción Decodificación de la instrucción Lectura del operando Procesamiento del operando Escritura del operando 1 2 3 4 5 6 Instrucción N Instrucción N+1 Instrucción N+2 Instrucción N+3 Instrucción N+4 Instrucción N+5 Instrucción N+6 El resultado obtenido es una mucho mayor tasa de instrucciones, aunque: qué pasa en el caso de ramificaciones? qué pasa si una instrucción usa un dato que modificó la previa? G. Jaquenod –

34 El FLUSH del pipeline en las ramificaciones
El pipeline contiene varias instrucciones sucesivas; y si una de esas instrucciones (por ejemplo la N+1) es de ramificación y al fin del paso 5 se detecta que la ramificación será tomada hacia una dirección X, lo leído de las instrucciones siguientes (N+2 en adelante) debe ser descartado (pipeline FLUSH) y el pipeline vuelto a cargar, desperdiciando ciclos Y los efectos de borde del ciclo 4? 1 2 3 4 5 6 Instrucción N Instrucción N+1 descartada Instrucción X tiempo perdido 1 2 3 4 5 6 1 2 3 4 - - Cómo es posible mejorar este problema? Mediante BRANCH PREDICTION ! 1 2 3 - - - 1 2 - - - - 1 - - - - - 1 2 3 4 5 6 Especulación si una ramificación será tomada o no, para llenar el pipeline con la secuencia de instrucciones considerada más probable y minimizar los casos de flush G. Jaquenod –

35 Uso de pipeline: conflictos de acceso
Cuando una instrucción actúa sobre un dato que será leído por la siguiente pueden ocurrir conflictos de pipeline que son solucionados insertando ciclos muertos (stall, sin borrar el pipeline). Ejemplo: la instrucción N+1 escribe en el paso 6 un dato que es leído por la instrucción N+2 en el paso 4: Instrucción N Instrucción N+1 Instrucción N+2 Instrucción N+3 Instrucción N+4 Instrucción N+5 Instrucción N+6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 Cómo es posible mejorar este problema? tiempo perdido 1 2 3 4 5 6 1 2 3 4 5 6 El compilador busca estas dependencias y si es posible cambia el orden de instrucciones (Ej: la N+2 con la N+3) para no tener que insertar ciclos muertos G. Jaquenod –

36 Prefetch y Cache de instrucciones
El software, secuencial, tiene localidad temporal y espacial inherente, y para acelerar la lectura de instrucciones se pueden usar varias soluciones: Una memoria FIFO que vaya leyendo instrucciones y suministrándola a la CPU a medida que ésta las necesita (caso del BIU del 8086) Una cache de instrucciones (solo lectura, sin problemas de coherencia), muy próxima a la CPU, de donde puedan leerse las ultimas instrucciones (y en general próximas, que por localidad espacial es probable que estén en la línea). Es muy útil en el caso de loops (tipo FOR o WHILE). Además, agregando inteligencia de decodificación, el update de la cache puede realizarse en avance por más de una vía, evitando tiempos muertos de update causados por el pipeline flush en una ramificación El tradicional modelo del PC se convierte en una unidad de suministro de instrucciones a la Unidad de Control G. Jaquenod –

37 Cambios de contexto en subrutinas
El prototipo de una función es: <tipo de valor de retorno> nombrefuncion (parámetros); Para implementar esta operación un compilador debe ejecutar varios pasos: Antes del CALL: reservar lugar en el área de stack para los parámetros, resultados, y variables locales copiar allí el valor o direcciones de los parámetros, y la dirección del resultado ejecutar el CALL Durante el CALL: realizar las operaciones en forma indexada con el SP, sobre el área reservada Al final del CALL: almacenar el resultado en la dirección correspondiente liberar el área de stack ejecutar el RETURN El uso de direccionamiento indirecto es un camino para no desperdiciar tanto tiempo moviendo datos El uso de registros para las variables elimina escrituras G. Jaquenod –

38 Modos operacionales En los procesadores modernos es habitual atender varias tareas y usuarios, y para administrar el uso de recursos y evitar interferencias indeseadas entre tareas o usuarios surgen alternativas de hardware y de software En el caso del software, el uso de un kernel o RTOS permite que la aplicación se abstraiga del manejo directo del hardware a través del uso de una capa HAL (Hardware Abstraction Layer) y Device Drivers En el hardware, además de disponer de uno o más bancos de registros para atender las interrupciones, los procesadores poseen otros bancos de registros asociados a distintos modos USUARIO, SYSTEM, SUPERVISOR, ABORT, u otros, donde cada modo tiene distintas restricciones. De igual modo, el manejo de memoria es restringido por hardware (MMU) a zonas específicas para cada tarea, de modo que una tarea no afecte a otra. G. Jaquenod –

39 El caso de los controladores basados en procesadores ARM
El caso de los procesadores ARM es sumamente importante Marca una primer tendencia a una estandarización de arquitecturas, independiente del fabricante del chip Es visible que al ser una arquitectura adoptada por múltiples fabricantes, llevara a la estandarización de muchos otros recursos: Compiladores Sistemas operativos de tiempo real Biblioteca de servicios: Stacks de comunicaciones File systems En tanto sea una iniciativa privada (y no de tipo código abierto) significa un riesgo de situación hegemónica G. Jaquenod –

40 Un procesador real para SoC: el caso ARM
ARM corresponde a una arquitectura RISC de 32-bit, siendo la más usada en la actualidad, y su simplicidad la hace conveniente para aplicaciones de “sistemas en un chip” (System On Chip, o SoC) de bajo consumo de potencia. Por eso es predominante en sistemas móviles como PDAs, teléfonos celulares, reproductores de video o música, o periféricos inteligentes. Los ARM poseen distintas variaciones de una arquitectura básica similar, incluyendo los ARM7, ARM9, ARM11, y desde hace poco los Cortex. La arquitectura ARM no es propia de un fabricante de chips, sino de una empresa que diseña IP, puede ser usada con licencia, y por eso existen procesadores ARM/Cortex fabricados bajo licencia de ARM por empresas como Atmel, Freescale, NEC, NVIDIA, NXP, Samsung, Sharp, ST Microelectronics, Texas Instruments, y otros. G. Jaquenod –

41 Características básicas de las arquitecturas ARM
Diseñados para aplicaciones pequeñas de alta performance y bajo consumo (es decir, NO para un centro de cómputo) RISC 32 bits Control simultáneo de la ALU y el shifter en cada instrucción de procesamiento de datos Juego de Registros con funcionalidades uniformes Arquitectura Load/Store (las operaciones sólo actúan sobre registros, en memoria sólo se lee y escribe) Modos de direccionamiento simple, de 3 hasta direcciones (source1, source2, destination) Capacidad de auto incremento y auto decremento Load y store de múltiples datos mediante una única instrucción (block moves). Interfase a recursos extra CPU (memoria y periféricos) mediante un conjunto de buses estandarizados (AMBA) G. Jaquenod –

42 Arquitectura del Processor Core de los ARMv4
Registro hidden Registro hidden interfase al mundo externo mundo interno de la CPU Destination Bancos de registros de 32 bits Bus local Source 1 Source 2 Shifter en el operando 2 Operaciones en 32 bits Unidad de control G. Jaquenod –

43 Diferencias entre Processor Core y CPU Core
Se llama Processor Core al bloque funcional que busca y ejecuta instrucciones, por ejemplo: ARM7TDMI, ARM9TDMI, ARM9E-S Se llama CPU Core al sistema formado por el Processor Core más otros bloques auxiliares inmediatos que complementan su operación, como: Manejo de Cache y administración de memoria Manejo de interrupciones Por ejemplo: ARM710T, ARM720T, ARM74T, ARM920T, ARM922T, ARM940T, ARM946E-S, and ARM966E-S CPU Core Processor Core 43 G. Jaquenod – 43

44 Un procesador real para SoC: el caso ARM
Los ARM actuales se dividen en cuatro versiones (v4/v4T, v5/v5E, v6/v6M y v7), donde la letra T indica aquellos que poseen la opción Thumb. La versión v4T tiene entre sus procesadores más exitosos el ARM7TDMI La versión v5 y v5E se usa en los ARM9, donde la E indica la adición de instrucciones tipo DSP. La versión v6 incluye a los ARM11 y la v6-M a versiones sintetizables, para uso en FPGA A su vez la arquitectura v7 define tres perfiles: ARMv7-M: para aplicaciones de bajo costo ARMv7-R: para tiempo real. ARMv7-A: para aplicaciones complejas. Ciertos v6 y los v7 son llamados Cortex v4/v4T v5/v5E v v7 v7-A Cortex-A8 v7-R Cortex-R4 v7-M Cortex-M3 ARM1136 1176 1156T-2 ARM926 946 966 XScale v6M ARM7TDMI StrongARM Cortex-M0 Cortex-M1 G. Jaquenod –

45 Un procesador real para SoC: el caso ARM
Las distintas arquitecturas (v4/v4T, v5/v5E, v6/v6M y v7) fueron agregando nuevas funcionalidades, tales como: El conjunto de instrucciones Thumb (en v4T) y su evolución a Thumb2 (en v7) Instrucciones para aplicaciones DSP (v5E) Unidad de manejo de memoria MMU, desde la v4T Unidad de protección de memoria MPU (en la v5E) Instrucciones Java (llamado Jazelle, en la v5E) Manejo de instrucciones de punto flotante (en la v5E) DMA (en la v5E) Extensión NEON para el procesamiento SIMD de datos de 128 bits (en v7-A) para aplicaciones gráficas y de audio G. Jaquenod –

46 El ARM7TDMI-S El ARM7 TDMI-S está basado en un núcleo ARM7, caracterizado por: Pipeline de 3 etapas Arquitectura Von Neumann Relación típica de 1.9 CPI (ciclos de reloj por instrucción), que se traduce en un tiempo típico de instrucción de 32ns operando a 60MHz El apéndice TDMI-S al nombre del núcleo corresponde a: T: Acepta el Set de instrucciones Thumb D: Incorpora recursos de debug M: Con un multiplicador de 32x32 con resultados de 64 bits I: Con recursos de emulación EmbeddedICE S: Sintetizable (descripto como bloque IP) G. Jaquenod –

47 Estados ARM y Thumb En aplicaciones embebidas, el uso de instrucciones de 32 bits (ideales para procesar datos) puede resultar en uso excesivo de memoria de programa Para ello, el ARM7TDMI-S puede operar en dos estados, que buscan e interpretan instrucciones de distinta longitud: Estado ARM: el núcleo ejecuta instrucciones de 32 bits, llamadas instrucciones ARM Estado Thumb: en este caso el núcleo ejecuta instrucciones de 16 bits, llamadas instrucciones Thumb, que responden a un subconjunto de las instrucciones ARM Los dos estados pueden ser conmutados en tiempo de ejecución, de modo de elegir en cada momento el conjunto de instrucciones más conveniente G. Jaquenod –

48 Conjunto de Instrucciones ARM
Todas las instrucciones son de 32 bits La mayoría de las instrucciones son ejecutadas en un único ciclo de reloj La mayoría de las instrucciones puede ser de ejecución condicional Las instrucciones ARM pueden ser clasificadas en 6 clases Instrucciones de ramificación (Branch instructions) Instrucciones de tratamiento de datos (Data Processing instructions) Instrucciones para tratamiento del registro de estado (Status register transfer instructions) Instrucciones de movimiento de datos (Load and Store instructions) Instrucciones para manejo de coprocesadores (Coprocessor instructions) Instrucciones para generación de excepciones (Exception-generating instructions) Según el tipo de clasificación usado para describirlas, se hablará de 6 clases, 3 clases, etc.. G. Jaquenod –

49 Conjunto de Instrucciones Thumb
El conjunto de instrucciones Thumb corresponde a un subconjunto del conjunto de instrucciones ARM Las instrucciones ARM más comunes han sido recodificadas en 16 bits Luego de leer la instrucción THUMB desde memoria es convertida a su formato ARM de 32 bits, previo a ser decodificada y ejecutada Es decir, las operaciones siguen siendo de 32 bits, usando datos y los mismos registros de 32 bits En general ,las instrucciones THUMB no tienen la posibilidad de ejecución condicional (sólo las ramificaciones, obviamente) Al usar el conjunto de instrucciones THUMB, aunque se requieren más instrucciones que en el caso ARM, la compresión de 32 a 16 bits resulta en una mejora de uso de memoria de programa de ~ 30%, si bien con la penalidad de mayor tiempo de ejecución G. Jaquenod –

50 Modos operacionales del ARM7
El ARM7 tiene siete modos operacionales: USER: modo sin privilegios bajo el cual corre la mayoría de las aplicaciones SYSTEM: modo privilegiado que usa los mismos registros que el modo USER FIQ: atención de la interrupción de mayor prioridad IRQ: atención de interrupción de propósito general SUPERVISOR: modo protegido para un sistema operativo al que se ingresa desde Reset, o mediante la instrucción SOFTWARE INTERRUPT ABORT: atención de violaciones de acceso a memoria UNDEFINED: atención de instrucciones indefinidas USER SYSTEM FIQ IRQ SUPERVISOR ABORT UNDEFINED Privileged Modes Exception Modes G. Jaquenod –

51 El pipeline en los ARM7 Los ARM7 cuentan con un pipeline de 3 niveles en la decodificación y ejecución de instrucciones que permite mejorar su performance Los tres niveles implementados son: Búsqueda (FETCH) Decodificación (DECODE) Ejecución (EXECUTE) De este modo muchas instrucciones pueden ser ejecutadas con una cadencia de una instrucción/ciclo El pipeline es resuelto por hardware y resulta prácticamente invisible al programador, sobre todo cuando éste programa en alto nivel Sólo debe ser tenido en cuenta cuando se usa al valor actual del PC como operando, dado que cuando se ejecuta una instrucción el PC la está buscando la instrucción que se halla dos words (8bytes) más adelante G. Jaquenod –

52 Registros del ARM7 El ARM7 tiene 37 registros de 32 bit, de los que 17 son visibles en cada modo operacional Tres de los registros visibles son especiales para cada modo: R14: Link Register (LR) con la dirección de retorno de subrutinas R13: convencionamente usado como SP al contexto del modo Program Status Register: (CPSR) registro de estado de ese modo En el caso del modo FIQ los registros R8 a R12 también son propios del modo R15: Program counter (PC) contiene la dirección de instrucciones, en bytes. Como las instrucciones son de 4 bytes, alineadas por words, los dos últimos bits son siempre 0 Todas las instrucciones pueden usar cualquiera de los 16 registros visibles G. Jaquenod –

53 Instrucciones de procesamiento de datos
El análisis de la figura sólo interesa a quien escribe el compilador de Assembler La razón de mostrarla es hacer notar cómo se aprovechan casi todos los bits para las distintas opciones descriptas previamente (sólo quedan dos bits sin usarse) Permite indicar dos registros fuente y un registro destino, entre otras cosas Ejecución condicional Condicion de actualizacion de CZVN 5 bits representan el shift de 0 a 31 lugares, y 3 bits uno de los 6 posibles tipos de shift Las instrucciones en ARM son condicionalmente ejecutables, los cuatro bits más significativos de la instrucción en ARM corresponden a la condición de ejecución. Este es el formato de las instrucciones aritméticas o lógicas en ARM. El primer operando será siempre el contenido de un registro (Rn). El segundo puede ser el contenido de un registro previamente Shifteado o bien un valor inmediato de 8 bits rotado. Esto dependiendo del bit 25 de la instrucción (0 o 1). El estado del CPSR puede ser actualizado o conservado según el estado del bit 20 (“S”) de la instrucción. El estado de estos bits (cond, I o S ) son establecidos a través de la sintáxis al escribir el código. Son 4 bits, podría ser 0 a 15, sólo tiene sentido 0 a 12 G. Jaquenod –

54 Instrucciones de movimiento de datos
Son usadas para transferir bytes o words entre los registros ARM y memoria, y pueden observarse 3 tipos: Escritura o lectura entre registros individuales y memoria, a nivel de byte, half word o word. Para ello se calcula una dirección del espacio de memoria formada por una dirección base más un desplazamiento opcional Escritura o lectura entre múltiples registros y memoria: es un tipo de instrucciones útil cuando el valor de un conjunto de registros debe ser salvado o repuesto (como ocurre en cambios de contexto), aunque con menos facilidades de direccionamiento que el caso previo Instrucciones atómicas (ininterrumpible) de intercambio (swap) de contenidos entre registros y memoria: es un tipo de instrucción útil para la implementación de semáforos En procesamiento de datos todos los operandos son de 32 bits, ya sea a través de un registro o especificado en forma literal en la instrucción. El resultado será dejado en un registro de 32 bits. Cada instrucción tienen 3 operandos dos de entrada y 1 para resultado. G. Jaquenod –

55 Intercambio entre registros y memoria (SWAP)
La forma de la instrucción es SWP{<cond>}{B} Rd,Rm,[Rn] La instrucción lee el word (B=0) o unsigned byte (B=1) desde la dirección de memoria apuntada por Rn en el registro Rd, a la vez que almacena el mismo tipo de dato (dado por B) contenido en el registro Rm en la dirección de memoria apuntada por Rn. Rd y Rm pueden ser iguales (aunque deben ser distintos a Rn), en cuyo caso se produce un intercambio de valores. Ninguno puede ser el PC. Aunque hay una lectura y una escritura el comportamiento es atómico, es usada para semáforos .. ADR r0,semaforo SWPB r1,r1,[r0] ; exchange En procesamiento de datos todos los operandos son de 32 bits, ya sea a través de un registro o especificado en forma literal en la instrucción. El resultado será dejado en un registro de 32 bits. Cada instrucción tienen 3 operandos dos de entrada y 1 para resultado. Rn Rd Rm Rm=Rd G. Jaquenod –

56 El set de Instrucciones THUMB
El conjunto de instrucciones Thumb es complementario al conjunto ARM, y no puede operar por sí solo (se verá que el Thumb2 sí lo permite) En el reset el procesador inicia en modo ARM y para pasar a Thumb se requiere ejecutar la instrucción BX Otras acciones que también cambian de ARM a THUMB son el retorno de interrupciones Al ser más eficiente en uso de memoria, la enorme mayoría de las instrucciones ejecutadas serán en modo Thumb, y sólo algunas en modo ARM. Esto justifica la aparición del Cortex y el modo Thumb2 En modo Thumb sólo son accesibles los registros r0-r7, y los registros r13, r14 y r15 tiene funciones predefinidas como Stack Pointer, Link Register y PC (en modo ARM usar r13 como SP es sólo una convención). Los registros r8 a r12 tienen acceso restringido G. Jaquenod –

57 Similitudes y diferencias entre los modos ARM y THUMB
En ARM todas las instrucciones son de 32 bits, en THUMB son de 16 bits Ambos modos usan una arquitectura load/store con procesamiento de datos, movimiento de datos, y flujo de control. De hecho, la CPU es la misma, las instrucciones THUMB sólo son casos selectos de instrucciones ARM expresadas de modo comprimido Ambos modos toleran datos de 8, 16 y 32 bits, alineadas según el tamaño Las instrucciones ARM son condicionales, de las THUMB sólo algunas Las instrucciones ARM son de 3 direcciones (SRC1, SRC2, DEST), en cambio en muchas instrucciones THUMB el DEST coincide con un SRC El formato de instrucciones es menos regular en THUMB que en ARM Todas las excepciones regresan la CPU a modo ARM y son atendidas en modo ARM. G. Jaquenod –

58 Excepciones Una excepción es una alteración del flujo de programa que suele cambiar el MODO de operación de la CPU, desde USER/SYSTEM a otro. Existen tres grupos Como resultado directo de la ejecución de una instrucción: SWI Instrucción indefinida o ilegal Búsqueda de la instrucción de una dirección ilegal Como consecuencia de la ejecución de una instrucción: Intento de lectura o escritura de memoria en una dirección ilegal Error aritmético (ej. División x cero) Como resultado de una señal de hardware externa, tales como: Reset Fast Interrupt (FIQ) Normal Interrupt (IRQ) G. Jaquenod –

59 Excepciones direccionadas por vector
Una Excepción puede ser vista como un llamado a subrutina “forzado”. Su ocurrencia excepción no es predecible (salvo en el caso de SWI) Cada excepción tiene una única dirección predefinida (IRQ, FIQ, etc), y el salto es hecho a esta dirección. La dirección al al cual el procesador es forzado a saltar es llamada vector de interrupción o excepción. En ARM podemos asignar las interrupciones en tres categorías IRQ Vectorizadas y No Vectorizadas FIQ Fast Interrupt Request: rápida y de baja latencia, habitualmente solo hay una por sistema, es la de máxima prioridad, es posible atender la interrupción sin identificar la fuente. G. Jaquenod –

60 TCMs: Tightly Coupled Modules
El los distintos modelos de ARM suelen existir varios módulos intimamente acoplados al processor core, entre ellos: Memorias cache de Instrucciones y datos MMU = Memory Management Unit: El módulo de manejo de memoria permite hacer un remapeo de direcciones, para que cada aplicación vea un espacio de direcciones de instrucciones y datos propio VIC = Vector Interrupt Controller: el módulo de manejo del vector de interrupciones permite administrar múltiples fuentes de FIRQ e IRQ. AMBA = Advanced Microprocessor Bus Architecture: interfase con otros módulos como memoria masiva y periféricos MPU = Memory Protection Unit: El módulo de protección de memoria, permite definir qué parte del espacio de memoria es utilizable por distintas aplicaciones, evitando interferencias (ARMv7) G. Jaquenod –

61 MMU La MMU permite administrar las direcciones que se usan, transformando direcciones lógicas virtuales en direcciones físicas. Controla los permisos de acceso a cada región de memoria (RW, RO o No Access) y también la operación de la cache de escritura en la página correcta, para asegurar la coherencia en cambios de contexto. Si la transformación de páginas falla, o si se violan permisos de acceso, la MMU genera excepciones a la CPU MMU ARM710T 61 G. Jaquenod – 61

62 Qué es AMBA? La CPU Core ARM se conecta con la memoria y los periféricos mediante una interfase estandarizada Esta característica permite que los distintos fabricantes de procesadores basados en ARM puedan definir y ofrecer periféricos propios La interfase AMBA (Advanced Microcontroller Bus Architecture ) define varios métodos posibles ARM710T CPU Core 62 G. Jaquenod – 62

63 Qué es AMBA? Advanced Microcontroller Bus Architecture es una norma de comunicaciones on-chip, independiente de la tecnología que se usa para implementarla, pues sólo define el protocolo del bus Originalmente define tres diferentes tipos de bus: AHB (Advanced High-performance Bus) ASB (Advanced System Bus), y APB (Advanced Peripheral Bus). En la versión 3 aparece AXI (Advanced ) Con la aparición del microprocesador Cortex (ARMv7) se define una versión del AHB llamada AHB Lite, para reducir la complejidad y costo Existen distintas generaciones de especificaciones AMBA, que han surgido con el avance tecnológico y la ampliación del tipo de aplicaciones de los procesadores ARM en sus distintas variantes G. Jaquenod –

64 Sistema típico G. Jaquenod –

65 Herramientas de Debug embebidas en la CPU
La presencia de extensiones de Debug es indicada por las letras D/I en el nombre de la CPU. Por ejemplo, en ARM7TDMI la D representa herramientas de debug básicas por JTAG y la I la presencia de un módulo EmbeddedICE. Este último es una extensión de la arquitectura ARM pensada para poder realizar una profunda inspección del sistema, que en las generaciones ARM7 y ARM9 pasó a ser el estándar de facto para debug. Se compone de Un conjunto de cadenas de hardware (scan chains) alrededor del núcleo, y los pines BRKPT, DBGRQ y DBGACK usados para el control del comportamiento del núcleo un bloque adicional que agregar un controlador JTAG TAP (TAP: Test Access Port), y la adición de lógica de watchpoints/breakpoints a la lógica de debug existente un convertidor de protocolo, para proveer la comunicación de la información de debug a través de JTAG con el computador de debug. Este protocolo puede ser provisto en dos opciones, estándar o MultiICE, con diferente velocidad de acceso. El EmbeddedICE es configurado por la interfase JTAG, y provee dos unidades de watchpoint en tiempo real, que pueden operar sin detener a la CPU (monitoreando acceso a datos) o insertar un breakpoint (monitoreando acceso a instrucciones). A diferencia de las facilidades de debug por software, en este caso no se afecta a la CPU, no se gasta código extra, y el debug puede ser hecho en ROM (FLASH) G. Jaquenod –

66 La evolución de ARM a Cortex
La arquitectura ARM7TDMI (v4,v4T) es muy poderosa, y la arquitectura v5 (los ARM9) más aún Pero la experiencia mostró que esa arquitectura tenía algunas cosas innecesarias pero le faltaban también otras cosas Eso llevó a las arquitecturas v6 (ARM11) y v7, que actualmente se comercializan como Cortex M0, M1, M3, M4, R4, y Cortex A8 y A9 Los cambios que suceden en la arquitectura de los procesadores no es arbitraria La evolución de la tecnología de fabricación, la aparición de nuevas tendencias de consumo, la competencia comercial y la evaluación estadística de aplicaciones, éxitos y fracasos es quien marca el camino al desarrollo de nuevos productos G. Jaquenod –

67 La evolución de ARM a Cortex: caso Cortex-M3 (ARMv7-M)
El Cortex-M3 es un microprocesador de 32 bits (bus de datos, registros e interfase a memoria). Su arquitectura Harvard mejora la performance, pues el acceso de datos no afecta el pipeline de instrucciones. También posee interfases a distintos buses que pueden operar en forma simultánea. Define un único espacio de direcciones para instrucciones y datos y en ciertos modelos ofrece una unidad de protección de memoria (MPU) y manejo de caches externas. Con facilidades de debug embebidas, que no sólo permite watchpoints y breakpoints, sino también facilidades de trace de instrucciones. System bus El system bus es usado para tener acceso a memoria (SRAM interna, RAM externa) y periféricos, dispositivos externos y parte del espacio de memoria G. Jaquenod –

68 La evolución de ARM a Cortex: modos operacionales
Simplificación de los modos operativos: dos modos privilegiados (thread y exception) y un modo Usuario (thread). El manejo de interrupciones (excepciones) es siempre en modo privilegiado. La estructura provee lo necesario para incorporar fácilmente un RTOS o incluso un sistema operativo más complejo (uC-Linux, Embedded CE, etc.) Ciertas instrucciones sólo son permitidas en modo privilegiado, para proteger memoria y datos en sistemas multi-thread En sistemas single thread se trabaja siempre en modo privilegiado Caso single-thread Manejo de excepciones Nivel base privilegiado Nivel base sin privilegios G. Jaquenod –

69 La evolución de ARM a Cortex: ARM & Thumb versus Thumb2
Un gran cambio en las arquitecturas v6 y v7 fue definir un nuevo ISA (llamado Thumb 2) frente a los 2 ISA (ARM y Thumb) de versiones previas Las instrucciones Thumb 2 no son de tamaño fijo, sino que en ciertos casos son de 16 bits y en otros casos de 32 bits Un único set de instrucciones evita la necesidad de estar conmutando de modo (el bit T en los ARM7), y simplifica la realización de compiladores Además, Thumb2 agrega a Thumb instrucciones para manejo de bits, de campos de bits, de direcciones, para la ejecución eficiente de construcciones de software (como switch, if/then/else, for) propias de lenguajes de alto nivel, para procesamiento digital de señales, y para cambios de contexto. Este nuevo set de instrucciones, más la arquitectura Harvard, a al evaluarse un conjunto de algoritmos de test estándar para evaluación de performance (Dhrystone) resulta para los Cortex-M3 en una performance de 1.25 DMIPS/MHz, mientras que la de los ARM7TDMI es sólo 0.95 (en modo ARM) y 0.74 (en modo Thumb). G. Jaquenod –

70 Thumb2: algunas de las nuevas instrucciones
RBIT: Inversión de bits de una palabra: El orden de todos los bits de un registro es invertido (el MSB pasa a ser el LSB) y el valor guardado en otro registro. Junto a las instrucciones de extracción de campos sirve para elaboración eficiente de una FFT REV (convierte un word de 32-bit de big-endian a little-endian data o viceversa) REV16 (convierte un half-word de 16-bit de big-endian a little-endian data o viceversa) REVSH CLZ (count leading zero); Permite analizar la magnitud de un valor y realizar ajustes de exponente. SDIV, UDIV: División con y sin signo SXTB, SXTH, UXTB, UXTH: Extensión de signo (signed y unsigned) SSAT y USAT: Saturación al pasar de 32 a 16 bits TBB y TBH: Para implementación eficiente de la instrucción switch de C, realizando ramificación por tablas con desplazamiento de bytes o half words CBZ y CBNZ: Para la realización eficiente del cierre de un for en C ITxxx: permite realizar construcciones simples tipo IF-THEN-ELSE de hasta 4 instrucciones con mínimo overhead de software G. Jaquenod –

71 Thumb2: algunas de las nuevas instrucciones
LDRD, STRD: Movimiento de datos de 64 bit entre dos registros y memoria, UBFX, SBFX: Separación de un campo de bits de un word (Bit Field Extract) Insertar Bit Field (BFI) y borrar Field Bit (BFC) DMB, DSB, ISB: Manejo del pipeline al cambiar de contexto para que los accesos a datos pendientes y las instrucciones en curso se completen antes de la instrucción siguiente, para cambios de contexto y mapas de memoria: WFE, WFI, y SEV: Wait-For-Event, Wait-For-Interrupts, y Send-Event: para detener el procesador y sincronizar tareas en sistemas multiprocesadores MSR y MRS: Para mover contenidos entre registros generales y especiales Manejo exclusivo de memoria para la implementación de semáforos: LDREX y STREX (word), LDREXB y STREXB (byte), LDREXH y STREXH (half word) G. Jaquenod –

72 Comparación Thumb 2 vs Thumb
en Cortex M0(v6) y M3(v7) Thumb G. Jaquenod – 72 72 72

73 Cortex-M3: facilidades de debug
Se incluyen facilidades de debug para control del programa, como halt, paso a paso, breakpoints, watchpoints (datos), inspección o modificación de registros/memoria, profiling, e historial de instrucciones (trace). Las acciones de debug pueden dispararse a causa de eventos como breakpoints, watchpoints, fault conditions, o señales externas de pedido de debug. Cuando sucede un evento la CPU puede detenerse o saltar a la excepción de Debug. La interacción no es por JTAG sino mediante una interfase llamada Debug Access Port (DAP), por la cual se puede acceder a registros y memoria incluso mientras la CPU está en ejecución. El manejo de la interfase es realizado por un módulo llamado Debug Port (DP), del que existen varias versiones: Serial-Wire JTAG Debug Port (SWJ-DP) que soporta JTAG y Serial-Wire, y SW-DP (que sólo soporta Serial-Wire). G. Jaquenod –

74 Cortex: mapa de memoria predefinido
Al usar direcciones de 32 bits, los 4 Gigabytes disponibles siempre son ocupados en una mínima fracción En vez de sólo definir la ubicación de los vectores y dejar libertad total para elegir la dirección de RAM, código o periféricos, en los Cortex existe una asignación predefinida del mapa de memoria, que facilita la operación de instrucciones y periféricos, e incluso define el tipo de interfase de bus usada para el acceso a cada región Junto a bit-banding, acceso no alineado a word/half word, y accesos exclusivos, permite mejoras de performance G. Jaquenod –

75 Cortex: manejo de datos por word o bits (bit-banding)
En el Cortex-M3, es posible hacer el set/reset de un bit individual sin necesidad de procesar toda la palabra que lo contiene. Una región predefinida de 1MB del mapa de SRAM y otra región de 1MB del mapa de periféricos tolera esta funcionalidad, donde cada bit de una palabra en esa región está asociado al bit 0 de una dirección individual (alias) que se refiere a ese bit Por ejemplo, para setear el bit 2 de la palabra ubicada en 0x , en vez de usar 3 para leer la palabra, hacer el OR con 0x04 y escribir la palabra, basta escribir 0x01 en la dirección 0x (cada bit está asociado a un alias de un word, que ocupa 4 direcciones, por eso el bit 2 tiene offset 8) G. Jaquenod –

76 Evolución de ARM a Cortex: NVIC
El NVIC, embebido en el Processor Core, presenta ventajas respecto al VIC de los ARM7, pues el NVIC y el processor core están físicamente conectados, sin necesidad de usar el AMBA, lo que mejora la rapidez de atención. El acceso completo al NVIC es realizado en modo privilegiado, aunque en modo usuario es posible generar excepciones por software, si esta funcionalidad ha sido habilitada. Soporte de interrupciones anidadas (Nested Interrupt Support): todas las interrupciones externas y la mayoría de las internas pueden ser programadas con diferentes niveles de prioridad. De este modo, al ocurrir una interrupción, el NVIC compara su prioridad con la prioridad de la tarea actual, y si la interrupción tiene mayor prioridad fuerza la activación de la ISR correspondiente. Soporte de Interrupciones Vectorizadas (Vectored Interrupt Support): cada interrupción tiene un lugar en una tabla de memoria que guarda la dirección de inicio de su ISR, que es cargada automáticamente al PC al atender esa interrupción. Cambios de prioridad dinámicos (Dynamic Priority Changes Support): los niveles de prioridad de las interrupciones pueden ser cambiados por software en cualquier momento, incluso el de la interrupción en curso, aunque en este caso se toma la prevención de evitar que sea reentrante G. Jaquenod –

77 Evolución de ARM a Cortex: NVIC
Reducción de tiempos de latencia: para acelerar la atención de eventos de tiempo real, el Cortex M3 realiza el salvado/recuperación automático de R0–R3, R12, LR, PC, y Program Status (PSR) en el Stack Pointer corriente. Como la atención de excepciones siempre se hace en modo privilegiado, en caso de interrupciones anidadas siempre se usará el Main Stack Pointer (MSP). Dado que el Cortex tiene arquitectura Harvard, mientras el bus de datos se usa para salvar los registros, el de instrucciones se usa para buscar la dirección de la ISR, y el IPSR se carga con el número de interrupción actual. Enmascaramiento de interrupciones: las interrupciones pueden ser enmascaradas en base a su prioridad, o totalmente mediante los registros BASEPRI, PRIMASK, y FAULTMASK. Esto es útil en tareas críticas que no deben ser interrumpidas. SYSTICK: como parte del NVIC existe un timer llamado System Tick (SYSTICK), un timer descendente que puede generar interrupciones con un ritmo regular, incluso con la CPU en SLEEP; es de importancia para un eventual OS. Sus registros son: SysTick Control and Status: enable, fuente de reloj, actúa por interrupción o polling SysTick Reload Value: valor de recarga al llegar a cero SysTick Current Value: valor actual. SysTick Calibration Value: cantidad de ticks en 10ms G. Jaquenod –

78 El Cortex-M0 El Cortex-M0 es la solución más simple de Cortex-M, y ofrece 0.9 DMIPS/MHz, con un set de instrucciones con menos de 60 instrucciones, apenas algunas más (ej: WFI) que el set Thumb del ARM7TDMI. Su mínimo uso de área sólo requiere el equivalente a 12K gates en la configuración mínima, haciéndolo ideal para aplicaciones de bajo costo, o en sistemas mixed-signal (digital+analógico, incluyendo RF). En ese caso, donde suele seguirse usando tecnologías de detalles grandes (0.35μm, 0.25μm, 0.18μm), el Cortex-M0 tiene una performance equivalente al ARM7TDMI con un tercio de tamaño y consumo de potencia. El NVIC incluye al timer SysTick, haciendo fácil el diseño de aplicaciones de bajo costo basadas en un RTOS G. Jaquenod –

79 El Cortex-M1 El Cortex-M1 es la propuesta ARM para quienes desean incluir un procesador estándar Cortex-M en una FPGA, con el mismo set de instrucciones del Cortex-M0. Las diferencias fundamentales son de timing dado que el M0 es para ser sintetizado en ASIC y el M1 en FPGA. El diseño se orienta a las FPGA de los líderes del mercado (ALTERA, XILINX, ACTEL), y posibilita elegir la mejor implementación para cada proyecto. El objetivo es evitar la competencia entre procesadores propios de cada fabricante (ej: NIOS II y MicroBlaze) ofreciendo una solución estándar de hardware y software, así como una fácil migración a un ASIC. Tipo de FPGA Ejemplo Frecuencia (MHz) Área LUTS 65 nm Altera Stratix-III, Xilinx Virtex-5 200 1900 90 nm Altera Stratix-II, Xilinx Virtex-4 150 2300 Altera Cyclone-III 100 2900 Altera Cyclone-II, Xilinx Spartan-3 80 2600 130 nm Actel ProASIC3, Actel Fusion 70 4300 Tiles Los resultados dependen de las herramientas de síntesis y Place & Route usadas, así como de las opciones de configuración, que en este caso han sido el menor núcleo (ningún TCM, sin extensiones de Debug), y suponiendo el chip comercial más veloz de esa familia G. Jaquenod –

80 Casos de Cortex M3: LPC13xx de NXP
Opera hasta 72-MHz, con un consumo de energía de (~200uA/MHz) y tres modos de consumo reducido: Sleep, Deep-sleep, y Deep-power-down Memoria FLASH de hasta 32kB y SRAM de hasta 8kB Periféricos seriales: USB 2.0 full-speed device controller con on-chip PHY, UART, SPI, I2C Drivers USB en el chip para modos MSD (memoria masiva) y HID (Human Interfase Device: mouse, teclado) Periféricos analógicos: ADC de 10-bit, 8 canales, y hasta 400 ksps Pin-to-pin compatible con los LPC111x (Cortex-M0) G. Jaquenod –

81 Casos de Cortex M3: Stellaris
SAFERTOS included in the LM3S9B96 High-integrity RTOS in ROM Can be used as a standard operating system OR as part of a high integrity application which requires certification to IEC61508 or FDA510(k) RTOS value $65k free with Tempest LM3S9B96 Integrated hardware/software solution shortens the time to market and significantly reduces cost for Industrial and Medical Applications G. Jaquenod – 81

82 Casos de Cortex A8 Sitara de Texas Instruments (1)
Bajo el nombre SITARA Texas Instruments comercializa una serie de procesadores Cortex-A8 y ARM9, de elevadísima capacidad, con relojes de 375 MHz a 1.5 GHz OMAP3503/15 ARM Cortex-A8:: con la designación OMAP, estos procesadores ofrecen una poderosa CPU, periféricos mutimedia, GPU compatible con OpenGL® ES 2.0, aceleradores de video, y un DSP TMS320C64x. AM35x ARM Cortex-A8: con alto rango de temperatura de operación, bajo consumo y capacidad gráfica. Entre sus periféricos se destacan CAM y el MAC de Ethernet. AM37x ARM: con reloj de hasta 1GHz, mejora 40% en procesamiento a la familia previa, duplica su capacidad gráfica, y consume 30% menos. La escalabilidad de la familia busca facilita la migración de desarrollos a través de las líneas Sitara y DaVinci AM389x ARM Cortex-A8: Los AM3892 y AM3894 están orientados a comunicaciones, redes, computadores de tarjeta (SBC) e industrial. La integración de periféricos de alta performance, como PCIExpress Gen2, doble USB 2.0, SATA 2.0, doble Gigabit Ethernet y doble interfase DDR2/3, recursos para gráficos 3D (AM3894) y controlador de display interno con soporte de hasta dos displays simultáneos, en resoluciones de hasta 1920 x 1280! G. Jaquenod –

83 CMSIS: Cortex Microcontroller Software Interface Standard
La evolución del hardware debe tener un acompañamiento similar por el software. Además de los lenguajes poderosos (C/C++) pasan a ser de importancia: los administradores de tareas (RTOS) Los servicios de abstracción entre las capas de software y hardware En el caso de la propuesta Cortex-M se ha definido la norma CMSIS, que define: Un modo común de acceso a periféricos Una forma estándar de definir los vectores de excepción Acuerdo en el uso de denominaciones para losperiféricos propios de Cortex y sus vectores Una interfase estándar e independiente del dispositivo (HAL) con el RTOS, y el debugger Interfases con aplicaciones típicas (TCP/IP Stack, Flash File System) Estas definiciones son enriquecidas por cada fabricante con la información propia de sus periféricos especiales. G. Jaquenod – 83 83

84 Conclusiones CREO QUE ESTAMOS EN UN MOMENTO MUY ESPECIAL, E INEDITO, DE LA HISTORIA DE LA EVOLUCION DE LOS MICROCONTROLADORES La existencia de un gran mercado con una arquitectura estándar permite suponer que los fabricantes de compiladores los optimizarán a un nivel muy superior al de los productos actuales, donde la constante aparición de nuevas arquitecturas impide la maduración de un producto antes que este sea reemplazado por uno nuevo Las interfases abiertas como Eclipse y compiladores/debuggers GNU posibilitarán una abierta competencia con productos comerciales Es razonable esperar procesadores con RTOS y stacks certificados en ROM, a costos mínimos o nulos G. Jaquenod –

85 Conclusiones Es previsible la estandarización (quizás por el IEEE?) de la interfase a RTOS, tal como ahora propone ARM con CMSIS. La sinergia de CPUs, RTOS, stacks, bibliotecas de hardware y software, plantean un ambiente de desarrollo totalmente inexplorado y sumamente poderoso La aparición de procesadores estándar permite estimar el surgimiento de muchos proveedores de IP de software, y la competencia entre las empresas por sus IP de hardware periféricos, pero manteniendo la compatibilidad de software Es probable que procesadores embebidos para FPGA como NIOS II o MicroBlaze sucumban frente a Cortex-M1 o nuevos modelos compatibles con Thumb2 G. Jaquenod –


Descargar ppt "Evolución en las Arquitecturas de microcontroladores Nuevas tendencias estandarizadoras de procesadores embebidos, herramientas de software y debug,"

Presentaciones similares


Anuncios Google