Documente Academic
Documente Profesional
Documente Cultură
microcontroladores
convenga
Batt Temp
• Que las mediciones sigan una
RAM, Flash,
secuencia de uno o más canales Direct
Direct
Data
Peripherals
Transfer
• El procesador sólo usa los Transfer
Transfer
Controller
Controller
Controller
resultados
• El filtrado de la señal de un
Temp
comparador es realizado
digitalmente mediante filtrado y
undersampling Batt
S38
amigable y comercialmente más
interesante a un producto Display
Segment
Memory
Output
• El uso de displays LCD surge como la 20x
8-bits
Control
interactividad R33/LCDCAP
Analog
• Un LCD requiere de un ciclo de Voltage R23
R
Multiplexer
actualización permanente, y por eso ACLK Timing Generator
R13
R
Multi-Way branch
tiempo útil
– Se inicializa una variable a ser usada
como contador
– Se ejecuta una vez la acción Instrucción n
– Se decrementa el contador y ..
• Si el contador no llegó a cero, se salta Instrucción de cierre
overhead
a ejecutar otra vez la acción
• Si en cambio el contador llegó a cero no
se continúa la ejecución secuencial Terminé?
• En muchos lenguajes de programación de alto
nivel se usa para esto una instrucción for si
• Ya algunos viejos microprocesadores (8051) Ramificación condicional!!
incluían DJNZ (Decrement and Jump if Not
Zero) para reducir el overhead
Memoria
Mundo
A D
Mundo
Memoria
Exterior
• Un bridge es un
Memoria externa intermediario entre dos
buses
A D A D • Estos pueden ser similares
Memoria
o responder a distintos
Bridge
Periféricos
CPU tamaños de datos y modos
Unidad de almacenamiento
Aritmética temporario
Bridge
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
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 - jaquenodg@gmail.com
Procesadores avanzados: otros
modos de direccionamiento
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 5 6 Instrucción N
1 2 3 4 5 6 Instrucción N+1
1 2 3 4 5 6 Instrucción N+2
1 2 3 4 5 6 Instrucción N+3
1 2 3 4 5 6 Instrucción N+4
Cómo es 1 2 3 4 5 6 Instrucción N+5
tiempo
posible mejorar perdido 1 2 3 4 5 6 Instrucción N+6
este problema?
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
Registro
Registro hidden
interfase al hidden
mundo externo
mundo interno Destination
de la CPU
Bancos de
registros de
Bus local
32 bits
Source 1
Source 2
Shifter en el
operando 2
Operaciones Unidad de
en 32 bits control
EmbeddedICE
por el Processor Core más otros & JTAG
address
physical
instructions & data
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
Privileged Modes
Exception Modes
– FIQ: atención de la interrupción de mayor prioridad IRQ
– IRQ: atención de interrupción de propósito general
– SUPERVISOR: modo protegido para un sistema SUPERVISOR
operativo al que se ingresa desde Reset, o
mediante la instrucción SOFTWARE INTERRUPT ABORT
– ABORT: atención de violaciones de acceso a
UNDEFINED
memoria
– UNDEFINED: atención de instrucciones indefinidas
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
..
Rm Rm=Rd ADR r0,semaforo
Rn Rn SWPB r1,r1,[r0] ; exchange
..
Rd
•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)
address
physical
instructions & data
de la cache de escritura en la
write
página correcta, para asegurar la buffer CP15
61
61 G. Jaquenod – 2010 - jaquenodg@gmail.com
Qué es AMBA?
address
physical
procesadores basados en ARM instructions & data
62
62 G. Jaquenod – 2010 - jaquenodg@gmail.com
Qué es AMBA?
• 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
Los cambios que suceden en la arquitectura
otras cosas de los procesadores no es arbitraria
• Eso llevó a las arquitecturas La evolución de la tecnología de fabricación, la
v6 (ARM11) y v7, que aparición de nuevas tendencias de consumo,
actualmente se comercializan la competencia comercial y la evaluación
como Cortex M0, M1, M3, estadística de aplicaciones, éxitos y fracasos
M4, R4, y Cortex A8 y A9 es quien marca el camino al desarrollo de
nuevos productos
66 G. Jaquenod – 2010 - jaquenodg@gmail.com
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 System bus
breakpoints, sino también facilidades de El system bus es usado para tener acceso a
trace de instrucciones. memoria (SRAM interna, RAM externa) y
periféricos, dispositivos externos y parte del
espacio de memoria
67 G. Jaquenod – 2010 - jaquenodg@gmail.com
La evolución de ARM a Cortex:
modos operacionales
• 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
72
72 G. Jaquenod – 2010 - jaquenodg@gmail.com
Cortex-M3: facilidades de debug
• 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 Por ejemplo, para setear el bit 2 de la palabra ubicada
funcionalidad, donde cada bit en 0x20000000, en vez de usar 3 para leer la palabra,
de una palabra en esa región hacer el OR con 0x04 y escribir la palabra, basta escribir
0x01 en la dirección 0x22000008 (cada bit está
está asociado al bit 0 de una
asociado a un alias de un word, que ocupa 4
dirección individual (alias) que
direcciones, por eso el bit 2 tiene offset 8)
se refiere a ese bit
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
83
83 G. Jaquenod – 2010 - jaquenodg@gmail.com
Conclusiones