“Arquitecturas de sistemas lógicos y para procesamiento de datos”

Download Report

Transcript “Arquitecturas de sistemas lógicos y para procesamiento de datos”

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 - 2010
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
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
Á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
G. Jaquenod – 2010 - [email protected]
Á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
G. Jaquenod – 2010 - [email protected]
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
Pb
• 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
7
G. Jaquenod – 2010 - [email protected]
O
Zr o Ti
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
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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
10
1.5V or 2.5V
Auto
AVSS
S/H
AVCC
VRVR+
10-bit SAR
ADC10SC
TA1
TA0
TA2
Batt Temp
Direct
Direct
Data
Transfer
Transfer
Transfer
Controller
Controller
Controller
RAM, Flash,
Peripherals
Solo se saca de StandBy a lo imprescindible, y
además se simplifica la tarea de la CPU
G. Jaquenod – 2010 - [email protected]
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
VREF
1.2V
Dominio digital
8x
PGA
16-bit 
SD16MEM0
Temp
Batt
• 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
G. Jaquenod – 2010 - [email protected]
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)
S39
S38
Display
Memory
20x
8-bits
S1
S0
12
G. Jaquenod – 2010 - [email protected]
COM3
COM2
COM1
COM0
Common
Output
Control
• Combinado con un sensor “touch
screen” permite una elevada
interactividad
• Un LCD requiere de un ciclo de
actualización permanente, y por eso ACLK
suele ser un periférico inteligente en
algunos procesadores, con memoria de
imagen propia, o compartida con el
procesador
Segment
Output
Control
R33/LCDCAP
Timing Generator
Analog
Voltage
Multiplexer
R23
R13
Charge Pump
Contrast Control
Bias
Generator
R03
R
R
R
Rx
Not
Required
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 (autobaud 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
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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)
TRUE
(IF)
Condición?
Instrucciones 1
FALSE
(ELSE)
Instrucciones 2
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);
dependencia
temporal
Operación que define algo
Ramificación condicional
Acción 1
Ramificación incondicional
Acción 2
elsif (condición2) then (acción2);
else (acción3);
17
G. Jaquenod – 2010 - [email protected]
Notar que son combinaciones de
ramificaciones condicionales e
incondicionales!! Tarea del compilador!!
Overhead en SWITCH,
SELECT o CASE
Multi-Way branch
Cómo mejorar el Multi-Way Branch?
• 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
18
G. Jaquenod – 2010 - [email protected]
Constante1
Constante2
Valor?
Constante3
Restantes
Instrucciones1
Ramif.incond.
Instrucciones2
Ramif.incond.
Instrucciones3
Ramif.incond.
Instrucciones4
Acción 1
Acción 2
Acción 3
Por defecto
Overhead en el caso de
repeticiones o iteraciones
19
G. Jaquenod – 2010 - [email protected]
Inicialización
tiempo útil
Instrucción 1
Instrucción n
Instrucción de cierre
Terminé?
no
si
Ramificación condicional!!
overhead
• 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
Ventajas y desventajas de la
arquitectura Von Neumann
Programa
Datos
CPU
Unidad
Aritmética
y Lógica
Unidad
de Control
Mundo
Exterior
1
2
Periféricos
Interfaz de Entrada y Salida
Memoria
A D
20
G. Jaquenod – 2010 - [email protected]
n
• 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?
Un microcontrolador tipo
Harvard (relajado)
A D
CPU
Unidad
de Control
1
2
Periféricos
Unidad
Aritmética
y Lógica
Interfaz de Entrada y Salida
Memoria
De datos
Mundo
Exterior
Memoria de Programa
21
G. Jaquenod – 2010 - [email protected]
n
• 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?
Alternativas de arquitecturas:
Bridges
Memoria externa
A D
Puede ser Harvard, Von Neuman, u otras
22
G. Jaquenod – 2010 - [email protected]
Periféricos
CPU
Unidad
Aritmética
y Lógica
Unidad
de Control
Bridge
Datos
Interfaz de Entrada y Salida
Programa
A D
Bridge
Memoria
• 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?
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
Y en los proyectos modernos
– Procesadores múltiples
se quieren ambas mejoras:
Performance y bajo consumo
– Múltiples buses y bridges
de energía
– Memorias cache
– Pipelining + predicción de ramificaciones
– Optimización de cambios de contexto
23
G. Jaquenod – 2010 - [email protected]
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
Distintos procesadores
comunes
Recursos
Decode
compartidos
Por ejemplo, en un celular:
r
• 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
24
G. Jaquenod – 2010 - [email protected]
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
Master1 Master2 Slave1 Slave2
BUS
Master2 debe esperar
Master1
Master2
Slave1
– Aumenta la tasa de intercambio de datos,
a costa de mayor complejidad del circuito
– Sigue siendo necesario arbitrar los
accesos a recursos comunes
25
G. Jaquenod – 2010 - [email protected]
Slave2
SWITCH
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
G. Jaquenod – 2010 - [email protected]
Evolución de la CPU:
para qué más registros?
Y si uso un bus local?
27
G. Jaquenod – 2010 - [email protected]
16 a 20 bits
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
MAB: Memory Address Bus
R0/PC Program Counter
MDB: Memory Data Bus
• 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
R15 General Purpose
SRC
DST
16
ALU de 16 bits
16
Un procesador elemental:
beneficios de 16 bits vs 8 bits
• 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.
28
G. Jaquenod – 2010 - [email protected]
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
MAB: Memory Address Bus
• Ello posibilita una instrucción por ciclo de
reloj, si la operación es entre registros
16 a 20 bits
MDB: Memory Data Bus
• 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)
R15 General Purpose
SRC
DST
16
ALU de 16 bits
16
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
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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!
31
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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
1. Generación de dirección de
programa
1 2 3 4 5 6
2. Lectura de la instrucción
1 2 3 4 5 6
1 2 3 4 5 6
3. Decodificación de la
1 2 3 4 5
instrucción
1 2 3 4
4. Lectura del operando
1 2 3
5. Procesamiento del operando
1 2
6. Escritura del operando
conviene tener??
6
5
4
3
Instrucción N
Instrucción N+1
Instrucción N+2
Instrucción N+3
Instrucción N+4
6
Instrucción N+5
5 6
4 5 6 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?
33
G. Jaquenod – 2010 - [email protected]
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
1 2 3
1 2
Cómo es posible mejorar
1
este problema?
Mediante BRANCH
PREDICTION !
5
4
3
2
1
6
5
4
3
2
1
6
1
2
3
Instrucción N
Instrucción N+1
descartada
descartada
descartada
descartada
- 4 5 6 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
34
G. Jaquenod – 2010 - [email protected]
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:
1 2 3 4
1 2 3
1 2
1
Cómo es
posible mejorar
este problema?
5 6
4 5 6
3
4 5 6
3 4 5 6
2
2 3 4 5 6
1
1 2 3 4 5 6
tiempo
1 2 3 4 5 6
perdido
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 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
35
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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
37
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 – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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
G. Jaquenod – 2010 - [email protected]
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.
40
G. Jaquenod – 2010 - [email protected]
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)
41
G. Jaquenod – 2010 - [email protected]
Arquitectura del Processor Core
de los ARMv4
interfase al
mundo externo
mundo interno
de la CPU
Registro
hidden
Registro
hidden
Destination
Bus local
Bancos de
registros de
32 bits
Source 1
Source 2
Shifter en el
operando 2
Operaciones
en 32 bits
42
G. Jaquenod – 2010 - [email protected]
Unidad de
control
Diferencias entre Processor
Core y CPU Core
• 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
43
43
G. Jaquenod – 2010 - [email protected]
CPU Core
Processor Core
virtual address
MMU
instruction &
data cache
physical
address
• Se llama Processor Core al bloque
funcional que busca y ejecuta
instrucciones, por ejemplo: ARM7TDMI,
ARM9TDMI, ARM9E-S
AMBA AMBA
address data
EmbeddedICE
& JTAG
instructions & data
write
buffer
AMBA interface
ARM7TDMI
CP15
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:
v4/v4T
v5/v5E
– ARMv7-M: para aplicaciones de bajo costo
ARM1136
1176
1156T-2
– ARMv7-R: para tiempo real.
– ARMv7-A: para aplicaciones complejas.
Ciertos v6 y los v7 son llamados Cortex
44
G. Jaquenod – 2010 - [email protected]
v6
ARM7TDMI
StrongARM
ARM926
946
966
XScale
v7
v7-A
Cortex-A8
v6M
v7-R
Cortex-R4
Cortex-M0
Cortex-M1
v7-M
Cortex-M3
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
45
G. Jaquenod – 2010 - [email protected]
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
46
– I:
Con recursos de emulación EmbeddedICE
– S:
Sintetizable (descripto como bloque IP)
G. Jaquenod – 2010 - [email protected]
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
47
G. Jaquenod – 2010 - [email protected]
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..
48
G. Jaquenod – 2010 - [email protected]
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
49
G. Jaquenod – 2010 - [email protected]
Modos operacionales del ARM7
SYSTEM
– SYSTEM: modo privilegiado que usa los mismos
registros que el modo USER
FIQ
– 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
50
G. Jaquenod – 2010 - [email protected]
Exception Modes
– USER: modo sin privilegios bajo el cual corre la
mayoría de las aplicaciones
IRQ
SUPERVISOR
ABORT
UNDEFINED
Privileged Modes
USER
El ARM7 tiene siete modos operacionales:
El pipeline en los ARM7
•
•
•
•
•
51
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 – 2010 - [email protected]
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
52
G. Jaquenod – 2010 - [email protected]
Instrucciones de procesamiento
de datos
El análisis de la figura sólo
interesa a quien escribe el
compilador de Assembler
Ejecución
condicional
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
53
G. Jaquenod – 2010 - [email protected]
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
Son 4 bits, podría ser 0
a 15, sólo tiene sentido
0 a 12
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
54
G. Jaquenod – 2010 - [email protected]
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
Rm
Rm=Rd
Rn
Rn
Rd
55
G. Jaquenod – 2010 - [email protected]
..
ADR r0,semaforo
SWPB r1,r1,[r0] ; exchange
..
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
56
G. Jaquenod – 2010 - [email protected]
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.
57
G. Jaquenod – 2010 - [email protected]
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)
58
G. Jaquenod – 2010 - [email protected]
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.
59
G. Jaquenod – 2010 - [email protected]
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)
60
G. Jaquenod – 2010 - [email protected]
MMU
• 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
61
61
G. Jaquenod – 2010 - [email protected]
virtual address
MMU
MMU
instruction &
data cache
physical
address
• La MMU permite administrar las
direcciones que se usan,
transformando direcciones lógicas
virtuales en direcciones físicas.
ARM7TDMI
EmbeddedICE
& JTAG
instructions & data
write
buffer
CP15
AMBA interface
AMBA AMBA
address data
ARM710T
Qué es AMBA?
• La CPU Core ARM se conecta
con la memoria y los periféricos
mediante una interfase
estandarizada
• La interfase AMBA (Advanced
Microcontroller Bus Architecture )
define varios métodos posibles
62
62
G. Jaquenod – 2010 - [email protected]
MMU
instruction &
data cache
physical
address
• Esta característica permite que
los distintos fabricantes de
procesadores basados en ARM
puedan definir y ofrecer
periféricos propios
virtual address
ARM7TDMI
EmbeddedICE
& JTAG
instructions & data
write
buffer
CP15
AMBA interface
AMBA AMBA
address data
ARM710T
CPU Core
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
63
G. Jaquenod – 2010 - [email protected]
Sistema típico
64
G. Jaquenod – 2010 - [email protected]
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)
65
G. Jaquenod – 2010 - [email protected]
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
66
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 – 2010 - [email protected]
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.
67
G. Jaquenod – 2010 - [email protected]
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
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.
Caso single-thread
Manejo de excepciones
Nivel base 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
68
G. Jaquenod – 2010 - [email protected]
Nivel base sin privilegios
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).
69
G. Jaquenod – 2010 - [email protected]
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
70
G. Jaquenod – 2010 - [email protected]
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)
71
G. Jaquenod – 2010 - [email protected]
Comparación Thumb 2 vs Thumb
en Cortex M0(v6) y M3(v7)
ADC
ADD
ADR
AND
ASR
BFC
BFI
BIC
CDP
CLREX
CMP
Thumb
B
CBNZ
CLZ
CBZ
CMN
DBG
EOR
LDC
LDMIA
BKPT
BLX
ADC
ADD
ADR
LDMDB
LDR
LDRB
LDRBT
BX
CPS
AND
ASR
B
LDRD
LDREX
LDREXB
BIC
LDRH
LDRHT
LDRSB
LDREXH
DMB
BL
LDRSBT
DSB
CMN
CMP
EOR
LDRSHT
LDRSH
LDRT
MCR
ISB
LDR
LDRB
LDM
LSL
LSR
MLS
MCRR
MRS
LDRH
LDRSB
LDRSH
MLA
MOV
MOVT
MRC
MSR
LSL
LSR
MOV
MRRC
MUL
MVN
NOP
NOP
REV
MUL
MVN
ORR
ORN
ORR
PLD
PLDW
REV16
REVSH
POP
PUSH
ROR
PLI
POP
PUSH
RBIT
SEV
SXTB
RSB
SBC
STM
REV
REV16
REVSH
ROR
SXTH
UXTB
STR
STRB
STRH
RRX
RSB
SBC
SBFX
UXTH
WFE
SUB
SVC
TST
SDIV
SEV
SMLAL
SMULL
WFI
YIELD
SSAT
STC
STMIA
STR
STRB
STRBT
CORTEX-M0
STMDB
STRD
STREX
STREXB
STREXH
STRH
STRHT
STRT
SUB
SXTB
SXTH
TBB
TBH
TEQ
TST
UBFX
UDIV
UMLAL
UMULL
USAT
UXTB
UXTH
WFE
WFI
YIELD
IT
CORTEX-M3
Present in ARM7TDMI
72
G. Jaquenod – 2010 - [email protected]
72
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 SerialWire).
73
G. Jaquenod – 2010 - [email protected]
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
74
G. Jaquenod – 2010 - [email protected]
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
75
Por ejemplo, para setear el bit 2 de la palabra ubicada
en 0x20000000, 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 0x22000008 (cada bit está
asociado a un alias de un word, que ocupa 4
direcciones, por eso el bit 2 tiene offset 8)
G. Jaquenod – 2010 - [email protected]
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
76
G. Jaquenod – 2010 - [email protected]
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:
77
–
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 – 2010 - [email protected]
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
78
G. Jaquenod – 2010 - [email protected]
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 CortexM0. Las diferencias fundamentales son
de timing dado que el M0 es para ser
sintetizado en ASIC y el M1 en FPGA.
Tipo de
FPGA
Ejemplo
65 nm
• 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.
79
G. Jaquenod – 2010 - [email protected]
Frecuencia
(MHz)
LUTS
Altera Stratix-III, Xilinx
Virtex-5
200
1900
90 nm
Altera Stratix-II, Xilinx
Virtex-4
150
2300
65 nm
Altera Cyclone-III
100
2900
90 nm
Altera Cyclone-II, Xilinx
Spartan-3
80
2600
130 nm
Actel ProASIC3, Actel
Fusion
70
4300
Tiles
Área
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
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)
80
G. Jaquenod – 2010 - [email protected]
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
81
G. Jaquenod – 2010 - [email protected]
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!
82
G. Jaquenod – 2010 - [email protected]
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.
83
G. Jaquenod – 2010 - [email protected]
83
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
84
G. Jaquenod – 2010 - [email protected]
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
85
G. Jaquenod – 2010 - [email protected]