Descargar

Evolución en arquitecturas de microcontroladores

Enviado por Pablo Turmero


    edu.red 1 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

    edu.red 2 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

    edu.red 3 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)

    edu.red 4 Á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

    edu.red 5 Á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

    edu.red 6 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 Memorias no volátiles de consumo nulo: FRAM O Zr o Ti Pb

    edu.red 7 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 100 Hrs @150°C, 1000 Hrs @125°C, 10 años @85°C, 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

    edu.red 8 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

    edu.red 9 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 (Gp:) DirectTransferController (Gp:) DataTransferController 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

    edu.red 10 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 La ganancia de precisión se obtiene por técnicas de DSP, mas económico y con menor consumo Dominio digital

    edu.red 11 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

    edu.red 12 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)

    edu.red 13 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).

    edu.red 14 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.

    edu.red 15 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

    edu.red 16 Overhead en una ramificación condicional IF con ELSE 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); Operación que define algo Ramificación incondicional Acción 2 Ramificación condicional Acción 1 FALSE (ELSE) TRUE (IF) Instrucciones 1 Instrucciones 2 Condición? Notar que son combinaciones de ramificaciones condicionales e incondicionales!! Tarea del compilador!! Two-Way branch dependencia temporal Ramificación condicional Condición?

    edu.red 17 Overhead en SWITCH, SELECT o CASE 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 Constante1 Constante2 Constante3 Restantes Acción 1 Acción 2 Acción 3 Por defecto Instrucciones1 Instrucciones2 Instrucciones3 Instrucciones4 Valor? Multi-Way branch Ramif.incond. Ramif.incond. Ramif.incond. Cómo mejorar el Multi-Way Branch? Cómo mejorar el Multi-Way Branch?

    edu.red 18 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 de cierre Instrucción n Terminé? no si Ramificación condicional!! overhead tiempo útil

    edu.red 19 Ventajas y desventajas de la arquitectura Von Neumann Datos Programa 1 2 n Interfaz de Entrada y Salida Memoria CPU Periféricos Mundo Exterior Unidad de Control Unidad Aritmética y Lógica A D 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 En que casos conviene? En que casos conviene?

    edu.red 20 Un microcontrolador tipo Harvard (relajado) Memoria de Programa 1 2 n Interfaz de Entrada y Salida Memoria De datos CPU Periféricos Unidad de Control Unidad Aritmética y Lógica A D Mundo Exterior 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 En que casos conviene?

    edu.red 21 Alternativas de arquitecturas:Bridges Datos Programa Interfaz de Entrada y Salida Memoria CPU Periféricos Unidad de Control Unidad Aritmética y Lógica A D A D Bridge Puede ser Harvard, Von Neuman, u otras Bridge Memoria externa 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 En que casos conviene?

    edu.red 22 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

    edu.red 23 Procesadores múltiples Decoder 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 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 Distintos procesadores (Gp:) Arbiter Recursos compartidos

    edu.red 24 BUS Procesadores múltiples:Buses y Switches 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 Master1 Master2 Slave1 Slave2 SWITCH Master1 Master2 Slave1 Slave2 Master2 debe esperar

    edu.red 25 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

    edu.red 26 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 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 R11 General Purpose R12 General Purpose R13 General Purpose R14 General Purpose R15 General Purpose SRC ALU de 16 bits MDB: Memory Data Bus MAB: Memory Address Bus 16 16 DST 16 a 20 bits Y si uso un bus local?

    edu.red 27 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. 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 R11 General Purpose R12 General Purpose R13 General Purpose R14 General Purpose R15 General Purpose SRC ALU de 16 bits MDB: Memory Data Bus MAB: Memory Address Bus 16 16 DST 16 a 20 bits

    edu.red 28 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

    edu.red 29 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.

    edu.red 30 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! Buscando un procesador más poderoso: RISC versus CISC

    edu.red 31 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)

    edu.red 32 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: 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 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? (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 5 (Gp:) 6 (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 5 (Gp:) 6 (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 5 (Gp:) 6 (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 5 (Gp:) 6 (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 5 (Gp:) 6 (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 5 (Gp:) 6 (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 5 (Gp:) 6 (Gp:) 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 Cuantos niveles conviene tener??

    edu.red 33 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 Cómo es posible mejorar este problema? Mediante BRANCH PREDICTION ! 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 – – 1 2 3 – – – 1 2 – – – – 1 – – – – – 1 2 3 4 5 6 Instrucción N Instrucción N+1 descartada descartada descartada descartada Instrucción X tiempo perdido 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 Y los efectos de borde del ciclo 4?

    edu.red 34 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: 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 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 1 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 Cómo es posible mejorar este problema? 3 4 5 6 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 tiempo perdido

    edu.red 35 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

    edu.red 36 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

    edu.red 37 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.

    edu.red 38 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

    edu.red 39 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.

    edu.red ESTA PRESENTACIÓN CONTIENE MAS DIAPOSITIVAS DISPONIBLES EN LA VERSIÓN DE DESCARGA