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
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
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)
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
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
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
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
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
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
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
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
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)
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).
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.
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
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?
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?
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
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?
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?
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?
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
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
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
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
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?
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
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
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.
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
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)
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??
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?
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
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
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
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.
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
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.
ESTA PRESENTACIÓN CONTIENE MAS DIAPOSITIVAS DISPONIBLES EN
LA VERSIÓN DE DESCARGA