Descargar el tutorial completo

Anuncio
Electrocomponentes S.A.
SASE 2011
Comparativas de CPU’s de 32 bits
Agenda
• Microcontroladores vs. Microprocesadores.
• Elementos de la arquitectura.
• Core ARM.
• Core AVR32.
• Core Coldfire.
• Core Power PC.
• Concluciones.
¿Qué es un Microprocesador?
• Un Microprocesador (uP) es un circuito integrado que incorpora en su interior
una unidad central de proceso (CPU) y todo un conjunto de elementos
lógicos que permiten enlazarlo con otros dispositivos como pueden ser
memorias y puertos de entrada y salida (I/O). Es un sistema del tipo
“ABIERTO”.
¿Qué es un Microcontrolador?
• Un microcontrolador (uC) es un circuito integrado que nos ofrece las
posibilidades de un pequeño computador. Es decir, que en su interior
podemos encontrar un procesador, memorias, y varios periféricos (puertos
I/O, A/Ds, D/A, etc.).
Bonus
•
Un procesador digital de señales o DSP (sigla en inglés de digital signal
processor) es un sistema basado en un microprocesador que posee un
juego de instrucciones, un hardware (MAC) y un software optimizados
para aplicaciones que requieran operaciones numéricas a muy alta
velocidad. Debido a esto es especialmente útil para el procesado y
representación de señales analógicas en tiempo real.
Distintos CORE
Arquitectura
• La arquitectura de un procesador esta formada por:
– La arquitectura del set de instrucciones (ISA).
– El ó los buses de comunicaciones.
– La segmentación (pipeline).
– El soporte de memoria (virtual/protegida).
ISA – Tipo de Instrucciones
• Cuando hablemos del set de instrucciones o mejor dicho la arquitectura del
set de instrucciones (ISA), se tendrá en cuenta varios elementos.
– El tipo de datos con que trabaja.
• En nuestro caso todas las arquitecturas que analizaremos son de 32 bits. Todas van a
soportar trabajar con datos 8, 16 y 32 bits. Ante cualquier excepción se hará una
mención.
– El tipo de instrucciones propiamente dicho.
– Los registros.
– Los modos de direccionamiento.
– Las excepciones/interrupciones y su manejo.
ISA – Tipo de Instrucciones
• Los sets de instrucciones suele estar
comúnmente separados en dos grupos:
– RISC: Reduce Instuction Set Computer.
La filosofía de estos dispositivos se
concentra en reducir la complexidad de las
instrucciones desempeñadas por el
hardware, porque es fácil proveer mayores
flexibilidad e inteligencia en el software
que en el hardware, lo que conlleva un
aumento de la complejidad del compilador.
– CISC:Complex Instruction Set Computer.
Esta filosofía se basa en aumentar la
complejidad del hardware para la
funcionalidad de las instrucciones, lo que
conlleva un set de instrucciones mas
complicado, pero produce que el
complidor utilice menos recursos.
ISA – Tipo de Instrucciones
• Todas las arquitecturas de procesadores que analizaremos poseen un set de
instrucciones tipo RISC. A continuación veremos sus características.
• Las principales características de una arquitectura tipo RISC son:
– Gran cantidad y uniformidad de registros, que pueden almacenar datos y
direcciones. Actuando como memoria local de acceso rápido para todas las
operaciones de procesamiento de datos.
– Arquitectura Load-Store.
– Modos de direccionamiento simples, con todas las direcciones de load/store
siendo determinadas desde contenidos de registros y campos de instrucciones.
– Cantidad de campos y largos de instrucciones fijos, lo que facilita la
decodificación de la mismas.
– Reducido numero de instrucciones, las cuales debido a su simplicidad pueden ser
ejecutadas en un solo ciclo de maquina. El complilador sintetizara operaciones
complejas en múltiples operaciones sencillas.
• Estas características, generan un aumento del desempeño del procesador
con el costo de un aumento en el tamaño del código.
ISA – Terminos
• MIPS es el acrónimo de "millones de instrucciones por segundo". Es
una forma de medir la potencia de los procesadores. Sin embargo,
esta medida sólo es útil para comparar procesadores con el mismo
juego de instrucciones y usando benchmarks que fueron compilados
por el mismo compilador y con el mismo nivel de optimización.
• El Dhrystone es un pequeño benchmark sintético que pretende ser
representativo de programación entera de sistemas. Está basado en
estadísticas publicadas sobre uso de particularidades de los lenguajes
de programación, sistemas operativos, compiladores, editores, etc.
Bus de comunicaciones
Arquitectura Von Neumann
Arquitectura Harvard
Segmentación
• Segmentación: pipeline, es un
método por el cual se
consigue aumentar el
rendimiento de algunos
sistemas electrónicos digitales
(microprocesadores). La
segmentación consiste en
descomponer la ejecución de
cada instrucción en varias
etapas para poder empezar a
procesar una instrucción
diferente en cada ciclo de
maquina y de esta forma
trabajar con varias
simultáneamente.
Segmentación
• Algunos microprocesadores
instrucción:
tienen
las
siguientes
etapas
en
una
– IF: búsqueda
– ID: decodificación
– EX: ejecución de unidad aritmético lógica
– MEM: memoria
– WB: escritura
• Cada una de estas etapas de la instrucción usa en exclusiva un hardware
determinado del procesador, de tal forma que la ejecución de cada una de
las etapas en principio no interfiere en la ejecución del resto.
Segmentación
• Algunos procesadores poseen una segmentación que permite comenzar mas
de una instrucción por ciclo de maquina, es decir tiene “n” etapas de pipeline
y de esta forma conseguir mayor paralelismo.
• Existen dos tipos de arquitecturas para este tipo de segmentación:
– Superescalar
– VLIW (Very Long Instruction Word)
• La diferencia de estas arquitecturas radica en quien decide que instrucciones
se ejecutan en paralelo.
– Superescalar, lo decide el procesador en tiempo de ejecución.
– VLIW, lo decide el programador o el compilador.
Soporte de memoria
•
La o las unidades de soporte de memoria son dispositivos de Hardware formado
por un grupo de circuito integrados, responsable del manejo de los accesos a la
memoria por parte de la Unidad de Procesamiento Central (CPU).
Entre las funciones de estos dispositivos se encuentran la traducción de las
direcciones lógicas (o virtuales) a direcciones físicas (o reales), la protección de la
memoria, el control de caché y, en arquitecturas de computadoras más simples
(especialmente en sistemas de 8 bits), Bank switching.
•
En la actualidad muchos procesadores separan la funciones de traducción de
direcciones de memoria y de protección de memoria en dos unidades, llamando a
la primera MMU (VMSA como lo suele llamar ARM) y a la segunda MPU (PMSA
como lo suele llamar ARM).
•
Cache: Un caché es un sistema especial de almacenamiento de alta velocidad.
Puede ser tanto un área reservada de la memoria principal como un dispositivo de
almacenamiento de alta velocidad independiente.
•
TCM: Memoria fuertemente acoplada (en inglés: Tightly Coupled Memory), es la
memoria del tipo que tiene los microcontroladores, a la que se accede
directamente. La memoria en sistemas con cache no es este tipo de memoria, ya
que esta entre la memoria y el micro se encuentra el cache.
Arquitecturas ARM
• ARM posee un gran numero de arquitecturas, las mas difundidas son:
– ARMv4T (ARM7TDMI y ARM9T)
– ARMv5TEJ (ARM926EJ y ARM7EJ)
– ARMv6 (ARM11)
– ARMv6-M (Cortex-M0)
– ARMv7
• Perfil M, diseñado para aplicaciones de microcontroladores, un procesamiento eficiente
es tan importante como, el bajo consumo y un bajo costo.
• Perfil R, diseñado para aplicaciones embebidas de alta prestaciones, en los cuales un
desempeño en tiempo real es necesario.
• Perfil A, diseñado para correr sistemas operativos tales como Linux o Windows CE.
Set de Instrucciones
• Inicialmente los procesadores ARM solo tenían un set de instrucciones de 32
bits (set ARM).
• A partir de la arquitectura ARMv4T, se incorpora un set de instrucciones de
16 bits (set Thumb).
• Este nuevo set de instrucciones:
– Reduce las funcionalidades del procesador, ya que para reducir el largo de
instrucciones son eliminados de este los bits de ejecución condicional y uno de
los operadores que las instrucciones de 32 bits incluían.
– Aumenta la cantidad de instrucciones para realizar una tarea particular, pero
disminuye la densidad de código total.
– Esta reducción de funcionalidades produce una disminucion del desempeño, en
el caso de un ARM7TDMI de los 0.94 DMIPS/Mhz en modo ARM, pasa a 0.74
DMIPS/Mhz en modo Thumb.
– En sistemas donde los puertos o el ancho del bus es menor a 32 bits se consigue
un aumento de desempeño trabajando en modo Thumb respecto al modo ARM.
Set de instrucciones
• A partir del procesador ARM1156 (arquitectura ARMv6T2), se incorpora el
set de instrucciones Thumb 2.
• Segunda generación del set Thumb.
– Blended 16 bit y 32 bit set de instrucciones.
– 25% mas rapido que Thumb
– 30% mas chico que ARM.
• Incrementa el desempeño pero mantiene la densidad de código.
• Maximiza el cache y el uso de la memoria TCM.
Modos de Operación
• La mayoría de los ARM poseen múltiples modos de operación:
– ARMv4/ARMv5 posee 7.
– ARMv6/ARMv7-R/ARMv7-A poseen 8.
– ARMv6-M/ARMv7-M poseen 3.
• Todos poseen un modo usuario (User) en el cual el procesador tiene acceso
restringido a distintos recursos del sistema (memoria, registros) y no puede
cambiar de modos. Este es el modo en que corren la mayoría de las
aplicaciones.
• El modo de sistema (System) es un modo privilegiado que permite el uso de
los recursos restringidos, con la salvedad de algunos registros destinados a
los distintos modos en los cuales puede entrar el procesador a raíz de una
excepción. Esto lo hace adecuado para sistemas operativos.
• Los modos restantes (FIQ,IRQ,Supervisor, Abort, Undefined, Monitor*),
son modos privilegiados y se accede a ellos a través de excepciones, es por
ello que se los denomina modos de excepción. Tienen acceso a los recursos
restringidos del sistema y pueden cambiar de modo libremente.
Modos de Operación
• Los procesadores de arquitectura
ARMv6-M y ARMv7-M poseen 2
modos de operación y 2 niveles de
privilegio.
– Thread mode.
– Handler mode.
– Nivel privilegiado.
– Nivel usuario.
• Los modos determinan si el
procesador esta corriendo un
programa normal o corriendo un
handler de excepción.
• Los niveles de privilegio proveen un
mecanismo para salvaguardar los
accesos a memoria en regiones
criticas como también un modelo de
seguridad básico.
Registros
• Las arquitecturas ARMv4/5/6/7-R/7-A poseen 37 registros de propósito
general, los cuales pueden almacenar tanto datos como direcciones.Todos
ellos son de 32 bits y son comunmente identificados con la letra “r”, por
ejemplo r14.
• Hay hasta 18 registros activos, de los cuales 16 son registros de datos y 2
registros de estado del sistema.
• De los 16 registros de datos, tres estan asignados a particulares tareas o
funciones especiales:
– r13, es tradicionalmente usado como “stack pointer”(sp), y almacena la cabeza de
el stack en el modo de procesamiento actual.
– r14, es llamado “link register”(lr) y es donde el core almacena el valor de retorno
si una subrutina es llamada.
– r15, es el “program counter” (pc) y contiene la direccion de la proxima instrucción
que el procesador debe buscar.
• Los otros dos 2 registros son de estado de programa:
– cpsr, registro de estado de programa actual.
– spsr, registro de estado de programa de back up (saved).
Registros
Current Visible Registers
Abort
Mode
Undef
SVC
Mode
IRQ
FIQ
Mode
Mode
User
Mode
r0
r1
r2
Banked out Registers
r3
r4
r5
r6
User
FIQ
r8
r8
IRQ
SVC
Undef
Abort
r7
r8
r9
r9
r9
r10
r10
r10
r11
r11
r11
r12
r12
r12
r13 (sp)
r13 (sp)
r13 (sp)
r13 (sp)
r13 (sp)
r13 (sp)
r13 (sp)
r14 (lr)
r14 (lr)
r14 (lr)
r14 (lr)
r14 (lr)
r14 (lr)
r14 (lr)
spsr
spsr
spsr
spsr
spsr
r15 (pc)
cpsr
spsr
Registros
• Los procesadores de arquitectura
ARMv6-M y ARMv7-M poseen 16
registros de 32 bits (R0–R15) y un
numero de registros especiales.
• Los registros R0–R12 son de
propósito general , pero algunas
instrucciones del modo Thumb 16bits solo pueden acceder a R0–R7
(registros bajos), mientras que las
instrucciones del modo Thumb-2
(32 bits) pueden acceder a todos
los registros inclusive R8-R12
(registros altos).
• Los registros especiales tiene
funciones predefinidas y pueden
solo ser accedidos por
instrucciones de acceso a registros
especiales (MSR, MRS).
Excepciones/Interrupciones
•
Una excepción es un evento que se produce durante la ejecución del programa y que
necesita cambiar la secuencia normal de ejecución de las instrucciones.
•
Las interrupciones son un tipo especial de excepciones que son causadas por
periféricos externos al core.
•
Para manejar las múltiples interrupciones que pueden generar los periféricos suele
haber lo que se llama un controlador de interrupciones, quien es el que produce la
excepción. (En algunas arquitecturas este control de interrupciones se realiza por
software)
•
Un concepto importante es la latencia, que definimos como el intervalo de tiempo
desde que una señal de interrupción aparece hasta que se ejecuta la primera
búsqueda (fetch) de una instrucción asociada a la rutina se servicio de la interrupción
(ISR).
•
Los handlers tienen dos métodos principales para reducir la latencia de las
interrupciones:
– Handler de interrupciones anidadas, permite que una interrupción ocurra cuando se esta
ejecutando una rutina de servicio de interrupción previa. Esto se logra reactivando las
interrupciones una vez que se atiende la interrupción. Una vez que la interrupción anidada
es completada, el control es devuelto a la rutina de servicio de la interrupción original.
– Handler de interrupciones priorizadas, se programa el controlador para que ignore
interrupciones de menor o igual prioridad que la que se encuentre en curso. Esto reduce la
latencia de interrupciones de mayor prioridad.
Manejo de Excepciones
•
Cuando una excepcion ocurre, el ARM:
– Finaliza la ejecución de la instruccion en curso.
– Copia el registro CPSR dentro de SPSR_<mode>
– Se configura apropiadamente los bits de CPSR.
• Se cambia al estado ARM.
• Se cambia al modo de excepcion.
• Se deshabilitan las interrupciones (si se requiere)
– Se almacena la direccion de retorno en LR_<mode>
– Configura el PC al vector de direccion.*
– Se salva el contexto.
•
Determinar la fuente de interrupcion, ir a la rutina de servicio correspondiente.
•
Para retornan, el handler de la excepcion necesita:
– Recuperar el CPSR desde el SPSR_<mode>
– Recuperar el PC desde el LR_<mode>
– Recuperar el contexto.
– Activar las interrupciones (si estuvieran)
26
Excepciones / Interrupciones
• Las arquitecturas ARMv4/v5/v6/v7-R/A tienen 7 tipos distintos de excepciones,
cada uno de las cuales tiene una prioridad de ejecución y se traducen en 5
modos distintos de operación.
Interrupt
SUB
STMFD
LDR
LDR
TST
BNE
TST
BNE
LMFD
LDR
r14,r14,#4 ;r14-=4
sp!,{r0-r3,r12,r14 }
r0,=IRQStatus
r0,[r0]
r0,#0x0080
timer_isr
r0,#0x0001
button_isr
sp!, {r0-r3,r12,r14 }
pc,=debug_monitor
;save context
;int status addr
;get int status
;if counter timer
;then branch to ISR
;else if button press
;then call button ISR
;restore context
;else debug monitor
Interrupt
handler
Enable int.
pc= lr-4
cpsr=spsr_{mode}
Restore
Context
Disable int.
pc= vector table entry
spsr_{mode}=cpsr
Save Context
ISR
Excepción
Modo
Prioridad
Vector
Reset
SVC
1
0x00
UI
UND
6
0x04
SWI
SVC
6
0x08
Prefetch Abort
ABT
5
0x0C
Data abort
ABT
2
0x10
Not assigned
0x14
IRQ
IRQ
4
0x18
FIQ
FIQ
3
0x1C
Nested Vectored Interrupt Controller (NVIC)
El NVIC es una parte integral del los procesadores ARMv6-M y ARMv7-M y provee la capacidad de
manejar las interrupciones pendientes de procesador.
Estos procesadores usa una tabla de vectores que contienen las direcciones de las funciones de
servicio de las interrupción. Para mejorar la flexibilidad del sistema, utilizan un modelo de
interrupciones basada en una pila (stack). Cuando una interrupción se lleva a cabo, registros críticos
de propósito general son almacenados en la pila. Una vez que el apilamiento y la instrucción de
búsqueda (fetch) se han completado, la rutina de servicio de interrupción, o de falla, se ejecuta. Una
ves terminada esta se produce la recuperación automática de los registros almacenados para que el
programa interrumpido reanude la ejecución normal. Este enfoque elimina la necesidad de escribir
código que se requieren para manipulación de la pila para realizar las rutinas tradicionales de servicio
de interrupción, lo que hace el desarrollo de aplicaciones mucho más fácil. El NVIC soporta anidación
de las interrupciones, lo que permite a una interrupción ser atendida antes, si presenta una mayor
prioridad.
Excepciones / Interrupciones
• Los procesadores ARMv6-M y ARMv7-M soportan el manejo de un numero
de excepciones de sistema y de interrupciones externas.
• Las excepciones son numeradas del 1 al 15 y las interrupciones del 16 en
adelante.
• ARMv6-M soportan hasta 32
interrupciones externas, 4
niveles de prioridades (2 bits)
y no soporta prioridades
grupales.
• ARMv7-M soportan hasta
496 interrupciones externas,
de 3 a 8 bits de niveles de
prioridades y soporta
prioridades grupales.
Cores ARM comparativas
Cache (I/D)/
Core
Arquitectura
Características
MIPS @ MHz
MMU
ARMv4T
3-stage pipeline,
ARM7TDMI
0.94 (ARM) /
none
(Von Neumann)
Thumb
0.74 (Thumb)
5-stage pipeline
Thumb,
ARMv5TEJ
ARM926EJ-S
variable,
Jazelle DBX,
(Harvard)
1.1 DMIPS / MHz
TCMs, MMU
Enhanced DSP
instructions
8-stage pipeline,
SIMD, Thumb,
ARMv6
ARM1136JF-S
Jazelle DBX, (VFP),
(Harvard)
Enhanced DSP
instructions
variable, MMU
1.25 DMIPS/MHz
Cores ARM comparativa
Cache (I/D)/
Core
Arq.
Características
MIPS @ MHz
MMU
ARMv6-M
3-stage
(Von Neumann)
Thumb, Thumb-2.
Cortex-M0
No cache.
0.9 DMIPS/MHz
3-stage + branch
no cache,
Cortex-M3
ARMv7-M (Harvard)
speculation
1.25 DMIPS/MHz
MPU optional.
Thumb, Thumb-2.
3-stage + branch
Cortex-M4
speculation
no cache,
Thumb, Thumb-2,
MPU optional.
ARMv7-ME (Harvard)
1.25 DMIPS/MHz
Floating Point Unit, DSP.
2.0 DMIPS/MHz
?-stage superscalar
Cortex-A8
ARMv7-A
variable (L1+L2),
in speed from 600
MMU+TrustZone
MHz to greater than
pipeline, ARM,VFP,
NEON,Thumb, Thumb-2.
1 GHz
Cores ARM comparativa
Cache (I/D)/
Core
ARMv7-M (Harvard)
Características
MIPS @ MHz
MMU
Cortex-A9
CortexA15
ARMv7-M (Harvard)
ARMv7-M (Harvard)
8-stage Superescala (OoO)
Thumb, Thumb-2,
Jazelle,DSP, SIMD NEON
,FPU
variable (L1+L2),
12-stage Superescala (OoO)
Thumb, Thumb-2,
Jazelle,DSP, SIMD NEON
,FPU
variable (L1+L2),
2.5 DMIPS/MHz
MMU+TrustZone
Hasta 2Ghz
MMU+TrustZone
Hasta 2.5Ghz
Productos Freescale
Herramientas Hardware-Software
• CodeWarrior 10.1
– IDE de Freescale sobre Eclipse.
Limitación de código en 128K.
• KEIL
• IAR
• Freescale tiene implementado en
sus placas Tower el
OPENSOURCE BDM. Lo cual es
una herramienta libre disponible en
la web.
Productos Freescale
Herramientas - Software
IDE’s/Tool Chains
•
ARM LTD
•
Code Sourcery
•
Green Hills
•
IAR Systems
•
Mentor Graphics
•
Microcross
•
Wind River
►
RTOS
•
Express Logic
•
Green Hills
•
Mentor Graphics
•
Micrium
•
Segger Systems
•
Quadros
•
QNX
•
Wind River
•
Codecs
•
DivX
•
Visual On
•
Actimagine
•
Linux OS
•
Monta Vista
•
Wind River
•
Timesys
•
Browsers
•
Opera
•
Access
•
•
Java
•
Aplix
•
Aonix
•
Navigation
•
Elektrobit
•
NavinGo
Development Boards
•
Logic PD
•
Phytec
•
Eurotech
•
iWave
•
Atmark
•
Kyoto
•
Cogent
•
karo
•
Graphics
•
Mazatech
•
Yappa
•
AGS
•
Other
•
•
•
•
•
Futuremark
Nuance
Loquendo
Virtual Logix
Cidana
•
VoIP/V2IP
•
Trinity
Convergence
•
ITRI
•
Hellosoft
•
SpiritDSP
•
Flash
•
Adobe
•
Bsquare
•
Calsoft
•
GUI/UI/HMI
•
Trolltech
•
Mentor
•
QNX
•
Swell SW
•
Altia
•
Fluffy Spider
En sistemas embebidos, un
paquete de soporte de
placa
(board
support
package (BSP) ) es una
implementación de código
para una placa especifica
que conforma el sistema
operativo.
Comúnmente
tiene un bootloader que
contiene el soporte mínimo
para los dispositivos para
cargar el sistema operativo
y los controladores para
todos los dispositivos de la
placa.
Herramientas - Hardware
► JTAG Tools
• ARM LTD
• American Arium
• Green Hills
• IAR Systems
• Kyoto
•
•
•
•
•
•
Microsystem
Lauterbach
Macragigor
Systems
Mentor Graphics
Sophia Systems
Signum
Wind River
PEEDI - JTAG/BDM/SWD Emulator and Flash
Programmer
PEEDI is an EmbeddedICE solution that enables you to
debug software running on ARM, CORTEX-M3,
CORTEX-A8, Power Architecture, ColdFire, Blackfin,
MIPS32, AVR32 processor cores via the
JTAG/BDM/SWD port. PEEDI provides the services
needed to perform all debugging operations
Productos ATMEL
Productos ATMEL
• SAM3S
– Microcontrolador de propósito general, con hasta 256KB de Flash, USB y
compatible con AT91SAM7S serie. Opera a 64Mhz.
• SAM3U
– Microcontrolador pensado para aplicaciones con alta taza de transmision de
datos, incluye USB HS (480Mbps), interfase SDIO/SD/MMC. Opera a 96Mhz.
• SAM3N
– Microcontrolador pensado para aplicaciones de bajo consumo, compatible con
familia SAM3S. Opera a 48Mhz.
Productos ATMEL
• AT91SAM9XE
– Microcontrolador con hasta 512K de Flash, múltiples interfases. Opera a 180Mhz.
• AT91SAM9Gxx
– Microprocesador con gran número de periféricos para conectividad e interfase de
usuario, soporta DDR2. Opera a 400Mhz.
• AT91SAM9M1x
– Especialmente diseñado para aplicaciones multimedias, incluye un decodificador
de video por hardware, acelerador 2D y controlador TFT LCD. Opera a 400Mhz.
Herramientas Hardware-Software
http://www.atmel.com/dyn/resources/prod_documents/atmel_tutorial_source.zip
http://www.yagarto.de/
AT91SAM-ICE JTAG Emulator
Permite programar y debuggear toda la
linea de core ARM de Atmel, es decir
SAM7 (ARM7)/ SAM9 (ARM9)/SAM3
(Cortex-M3)
Arquitecturas AVR32
• La arquitectura AVR32 tiene lo que ellos llamas 2 microarquitecturas, las
cuales le permiten adaptar un mismo procesador a distintos tipos de
aplicaciones.
– AVR32A, pensada para aplicaciones de microcontroladores, tales como
AT32UC3A/B.
– AVR32B, pensada para aplicaciones de microprocesadores, tales como la línea
AP7000.
Set de Instrucciones
• El procesador puede trabajar con datos de 8,16,32 y 64 bits.
• El procesador AVR32A posee dos set de instrucciones .
– Un set de instrucciones compacto, el cual es de 16 bits.
– Un set de instrucciones extendido, el cual es de 32 bits.
• Al igual que lo comentado para las arquitecturas ARM, esto permite reducir la
densidad de código pero tiene como consecuencia la reducción del
desempeño.
• Todas las instrucciones deben ser puestas en memoria en el limite de 16 bits
(halfword). Las instrucciones mas extensas pueden ser colocadas en forma
alineada o no.
• Las instrucciones son almacenadas en formato big endian.
Modos de operación
• Los procesadores AVR32 poseen multiples modos de operaciones, los
cuales los podemos separar en modos privilegiados y modos sin privilegio.
Los primeros son llamados modos de sistema.
• Luego del reset el procesador estará en el modo supervisor.
• El cambio modo se puede llevar a cabo a través de software, o puede ser
causado por una interrupción externa o un proceso de excepción.
• En el modo de aplicación, modo sin privilegios, la mayoría de los registros de
sistema, la parte superior del registro de estado y las áreas de memoria
protegida, no podrán ser accedidas.
Registros
•
La procesadores AVR32A poseen 23 registros de propósito general los cuales
pueden almacenar tanto datos como direcciones.Todos ellos son de 32 bits y son
comúnmente identificados con la letra “R”, por R12.
•
Tres de ellos poseen funciones particulares, stack pointer, link register y program
counter. Además de estos existe el registro de estado “SR”, por lo que en todo
momento habrá 17 registros activos.
•
A diferencia de los ARMv4 y al igual que los ARMv7-M, los AVR32A no poseen
“shadow register”, es decir que cuando hay un cambio de modo, producido por una
excepción, interrupción o por comandos, los registros que nos interesen deben ser
stackeados.
•
Solo el registro stack pointer posee registros de respaldo para los modos
privilegiados, lo que facilita un stack de sistema dedicado.
•
Cuando sucede una excepción el registro de estado (SR) y el de la dirección de
retorno son almacenados automaticamente en el stack.
•
Si sucede una interrupción son almacenados automaticamente el registro de estado,
la direccion de retorno y los registros R8-R12 y LR.
Registros
Excepciones / Interrupciones
• En el manual del AVR32 se los engloba a las excepciones e interrupciones
como eventos.
• El procesador AVR32A posee 28 fuentes distintas de eventos.
• Cada una de las cuales posee una prioridad y dirección a la cual el handler
accede cuando el evento es aceptado.
• La mayoría de los handler de evento estan ubicados secuencialmente, y en
ellos hay una instrucción de salto a la rutina de servicio. Pero existen algunos
pocos handler que tiene espacio suficiente para escribir una pequeña rutina
en ellos.
• Posee un controlador de interrupciones, en el cual todas las fuentes de
interrupción externa poseen una rutina de servicio vectorizadas.
• El controlador permite configurar distintos niveles de prioridades e inclusive
activar la ejecución de interrupciones anidadas.
• Como ejemplo el controlador AVR32UC3A maneja hasta 2048 líneas de
interrupciones separadas en 64 grupos de 32 interrupciones.
Excepciones / Interrupciones
•
Cuando sucede un evento, y
este no esta enmascarado, el
hardware automáticamente
inhibe la generación de eventos
de igual o menor prioridad.
•
Luego el contexto es
automáticamente salvado. Por
default son salvados el Status
register y el Program counter,
pero si el evento es INT0-INT3,
se le suman R8-R12 y LR.
•
En anidamiento de
interrupciones se inhibio en el
primer paso pero se puede
activar en la rutina a traves de
los bits EM y GM.
•
A continuación la dirección del
Handler del evento es cargado
en el Program counter.
Excepciones / Interrupciones
• En la figura de la diapositiva anterior, podemos que cada fuente de
excepción posee una dirección en la cual se encontrara el handler del evento
en cuestión.
• Alguna están definidas, como el Reset, y otras son en función de una
dirección base para el vector de excepciones (EVBA) mas un offset definido.
• Las excepciones INT0,1,2 y 3 que corresponden a las interrupciones
externas figuran como “Autovectored”. Esto significa que la dirección del
handler de cada interrupción externa, que el numero es mucho mayor que
las 4 excepciones, esta definido por la EVBA mas un offset, el cual es
definido por el controlador de interrupciones.
Bus de comunicaciones
• Las Arquitecturas AVR32 poseen un bus de comunicaciones con arquitectura
Harvard.
Segmentación
• La Arquitectura AVR32A posee 3 etapas de segmentación, mientras que la
AVR32B posee 7.
Cores AVR32 Comparativa
Core
Arquitectura
Características
Cache (I/D)/
MMU
MIPS @ MHz
3-stage pipeline,
Set de intrucciones de
AVR32UC
AVR32A
(Harvard)
Entre
16 y 32 bits.
Instrucciones de DSP.
MPU opcional
1.4 y 1.25
DMIPS/Mhz.
Flash Vault.
91MIPS/66Mhz
Unidad de punto flotante
61MIPS/50Mhz
opcional.
7-stage pipeline
AVR32AP
Set de intrucciones de
Cache de
AVR32B
16 y 32 bits.
(Harvard)
Unidad de punto flotante
intrucciones y
datos
Instrucciones de DSP y
MMU
SIMD
1.4DMIPS/Mhz
210MIPS/150Mhz
ATMEL-AVR32
AT32UC3
Esta línea de dispositivos esta pensada para aplicaciones que
requieran conectividad, bajo consumo y un gran desempeño de
computo, el cual es del orden de 91DMIPS@66Mhz con un consumo
de 40mA@3,3V. Además incluye USB 2.0 (FS) con On-The-Go ,
controlador de Ethernet, interfaz para SDRAM, DAC para audio y
esta disponible en 100 y 144 pines.
Esta línea de dispositivos esta pensada para aplicaciones que
requieran una conectividad USB de muy alta velocidad (HS), un
gran desempeño de computo y interfaces de memoria rápidas. Posee
un desempeño de 91DMIPS@66Mhz, Hi Speed USB con OTG,
SD/SDIO interfaz, NAND Flash y SDRAM interfaz, DAC para audio
y esta disponible en 100 y 144 pines. Existe versiones con
encriptación AES de 128 y 256 bits.
ATMEL-AVR32
Esta línea de dispositivos esta pensada para aplicaciones
automotrices e industriales, optimizada para comunicaciones rápidas
y control de motores. Posee interfases CAN, LIN, USB OTG,
además PWM con dead-time, ADC, DAC, FPU. Es 5V tolerable y
posee un desempeño de 91DMIPS@66Mhz
Esta linea de dispositivos esta pensada para aplicaciones que
requieran una tasa de transmisión de datos alta, bajo consumo y un
gran desempeño de computo. Esta familia tiene un desempeño del
orden de 83DMIPS@60Mhz con un consumo de 23mA@3,3V.
Ademas incluye USB 2.0 (FS) con On-The-Go y esta disponible en
48 y 64 pines.
Esta línea de dispositivos esta pensado para aplicaciones portátiles
donde el bajo consumo es fundamental. Gracias a la tecnología
Picopower logra 0,48mW/Mhz y hasta un consumo de 100nA.
Incluye un periférico con capacidad touch sense, FlashVault, corre a
una frecuencia de clock de hasta 50Mhz y en tan solo 48 pines.
Herramientas - Software
AVR32 Studio, es un entorno de desarrollo (IDE) para desarrollar
apliciaciones sobre los productos de 32 bits de core AVR. Esta
construido sobre Eclipse permitiendo una rapida integracion con
terceras partes.
AVR32 GNU Toolchain, este provee un conjunto de programas de
linea de comando para crear aplicaciones para microcontroladores
AVR32. Incluye compliador, ensamblador, linker, debugger,
herramientas de programación y librerias en C.
UC3 Software Framework, este provee drivers y librerias para
realizar una aplicación para los productos de la familia AVR32 UC3.
Este incluye Drivers para los perifericos, librerias optimzadas para
AVR32, aplicaciones Demo, codigo fuente de un RTOS listo para
usar. Todo esto en codigo C y compatible con GNU GCC y IAR.
Herramientas - Hardware
AVRDragon
AVR ONE!
JTAG mkII
Arquitecturas ColdFire
• Coldfire es una arquitectura propietaria de Freescale. La primera versión del set
de instrucciones de Coldfire fue desarrollada como una verisón reducida del set
del M68000.
• A medida que la familia de procesadores Coldfire fue creciendo nuevos set de
instrucciones se fueron desarrollando para mejorar el desempeño y la densidad
de código.
• Las revisiones disponibles del ISA son:
–
–
–
–
–
–
–
–
ISA_A: The original ColdFire instruction set architecture
ISA_A+: Combining a major revision with selected instructions from other revisions.
ISA_B: Added improved data movement instructions, byte- and word-sized compares,
miscellaneous enhancements
ISA_C: Added instructions for improved bit manipulation
FPU: Original ColdFire instruction set architecture for floating-point unit (FPU)
MAC: Original ColdFire instruction set architecture for multiply-accumulate unit (MAC)
EMAC: Revised ISA for enhanced multiply-accumulate unit (EMAC)
– EMAC_B: Added instructions for dual-accumulation operations
Arquitecturas Coldfire
• Freescale ofrece varios core con arquitectura Coldfire.
• La principal diferencia entre los core de Colfire es la organización del pipeline.
– V1, estos implementan el ISA C.
– V2, estos implementan el ISA A, con el agregado de soporte para utilización de stack
pointer separado y nuevas instrucciones para para el manejo de bits (ISA A+).
Además el core incluye una EMAC para el procesamiento de señales.
– V3, estos implementan el ISA A+.
– V4, estos implementan el ISA C, además de incluir una EMAC y una MMU.
Set de Instrucciones
• Los core Coldfire están basados en el concepto de set de instrucciones
reducido de largo variable.
• La utilización de este tipo de instrucciones permite un aumento de la
densidad de código.
• Mientras la muchas de las operaciones que realiza el core utilizan opcodes
de 16 bits, el largo de las instrucciones puede consistir de 16, 32 o 48 bits
dependiendo los modos de direccionamiento.
Modos y Registros
•
Los procesadores Coldfire poseen dos modos de
operación.
– Modo Supervisor.
– Modo usuario.
•
En modo usuario todos los core poseen
– 8 registros de 32 bits para datos.
– 8 registros de 32 bits para direcciones.
– 1 registro de 32 bits como PC.
– 1 registro de 8 bits como registro de condición.
•
En función de las distintas unidades que se
pueden implementar, existiran un conjunto de
registros asociados a estos.
– FPU (Unidad de punto flotante)
– MAC
– EMAC
•
En modo supervisor posee un conjunto de
registros adicionales, los cuales no son todos
implementados en las distintas versiones.
Excepciones / Interrupciones
•
Una vez que la excepción es detectada y
tomada, el procesador realiza cuatro pasos,
lo que no incluyen la ejecución de la rutina
de excepción:
– Se copia el contenido del status register (SR)
en una localización temporaria, se conmuta a
modo supervisor, se deshabilita el modo
trace y se configura la mascara de
interrupciones para evitar ser interrumpido
por alguna de menor prioridad.
– El procesador determina el numero del
vector de excepción, para cada una de las
excepción que pertenece al core (fault excep
interrup) existe un numero de vector
determinado. Si corresponde a una
interrupción de un periferico, el procesador
realiza un ciclo reconocimeinto de la
interrupción para obtener el numero del
periferico y de esta forma determinar el
vector de excepción.
– El procesador salva el contexto (SR y PC).
– Se carga en el PC la del vector de excepción
Excepciones / Interrupciones
• La tabla de vectores de excepciones contiene 256 entradas. Las entradas
del 0x00 al 0x3F o los primeros 64 vectores son reservados para
excepciones del procesador. Los restantes 192 vectores son reservados
para el usuario y pueden ser asignados a los periféricos.
• Los Coldfire implementan un controlador de interrupciones (INTC) de 64
entradas, las cuales estan organizadas en 7 niveles de prioridad. Si suceden
interrupciones con el mismo nivel de prioridad, se atenderá primero la que
tenga numero mayor.
• Dentro de un mismo dispositivo se pueden integrar hasta 3 INTC,
permitiendo hasta 192 fuentes de interrupción.
Bus de Comunicación
• Salvo los Coldfire V4, el resto del
los procesadores poseen una
arquitectura de Bus tipo Von
Neumann
Segmentación
• Todos los core de Coldfire incluyen dos
“bloques” de pipeline independientes y
desacopladas.
– Un pipelinde de búsqueda de instrucciones.
– Un pipeline de ejecución.
• Ambos bloques de pipeline están
conectados por un buffer de instrucciones
tipo FIFO, el cual permite búsqueda
adelantada de instrucciones.
• Sin contar IAG ni IB podemos decir que las
etapas de pipeline de cada versión de
Coldfire son:
– V1 y V2 tres etapas.
– V3, cinco etapas
– V4, nueve etapas, mas algunas etapas para
manejo de saltos.
Segmentación
Cores Coldfire comparativa
Cache (I/D)/
Core
Arq.
Características
MIPS @ MHz
MMU
3-stage
ISA C
0.95 DMIPS/Mhz
Core V2, periphal 8bits
CF V1
No cache.
(Von Neumann)
50Mhz
VLI (Varible Length Instruction)
3-stage
0.95 DMIPS/Mhz
ISA A, ISA A+
EMAC, FPU
CF V2
No cache
76MIPS@80Mhz
(Von Neumann)
VLI (Varible Length Instruction)
5-stage
ISA A+
CF V3
(Von Neumann)
EMAC, FPU and exta MAC
optinal
0.88 DMIPS/Mhz
Cache
211MIPS@240Mhz
VLI (Varible Length Instruction)
9-stage superscalar
1.54 DMIPS/Mhz
ISA B, ISA C
CF V4
pipeline, EMAC, FPU
(Harvard)
VLI (Varible Length Instruction)
Cache / MMU
410MIPS@266Mhz
Productos
Productos
Herramientas Hardware-Software
• CodeWarrior V10.1, para ColdFire
V1/2/3/4 (Hasta 64 K para V1 y
128K para el resto)
• CodeWarrior V6,3 para ColdFire V1.
(Hasta 64Kb de codigo en C gratis)
• Code Warrior V7,2 para ColdFire
V2/3/4. (Version para linux
disponible)
USB BDM Multilink.
(Para micros de
9S08/HC12/V1)
USB Coldfire Multilink
(Para micros
V2/V3/V4)
Arquitecturas Power PC
• Las POWER ARCHITECTURES las podemos dividir en dos grandes grupos:
– POWER, arquitectura creada por IBM para estaciones de trabajo y servers.
– POWER PC, arquitectura creada por AIM (Apple, IBM y Motorola) para aplicaciones
de mercado masivo, tales como set top boxes, consolas de juego, aplicaciones
embebidas y computadoras portátiles.
• A diferencia de las arquitectura previamente vistas, existen varias empresas
que evolucionan esta arquitectura. Inclusive existe una organización
“power.org” cuya función es desarrollar productos con esta arquitectura y definir
especificaciones para nuevas arquitecturas.
• Cores en la actualidad.
– e200, e300 and e300e/PPC G2, e500, e600/PPC G4, e5500 – Freescale.
– POWER5,POWER6,POWER7, PowerPC 970– IBM.
– PPC400, Titan - Applied Micro Circuits Corporation (AMCC).
– PowerPC 7xx - IBM / Motorola (freescale).
– Cell – Sony, IBM, Toshiba.
Arquitecturas Power PC
• Existen varias arquitecturas del set de instrucciones (ISA) algunas de las
cuales están publicadas y otras no.
– e200: esta basado en la especificación ISA V2.03
– e300: esta basado en las especificaciones del MPC603e (PPC G2).
– e500: esta basado en la especificación ISA V2.03 y el viejo Book E (PPC G2)
– e600: esta basado las especificaciones del PPC G4.
– e5500: esta basado en la especificación ISA v2.06.
Set de instrucciones
•
Los cores e200 implementan la arquitectura detallada en la especificación ISA v2.03.
•
Esta arquitectura detalla 4 tipo de instrucciones básicas, a las cuales suele asociarse
un conjunto de registros.
– Instrucciones de salto.
– Instrucciones de punto fijo.
• 32 registros de propósito general (GPR) de hasta 64 bits
– Instrucciones de punto flotante.
• 32 registros de punto flotante (FPR) de hasta 64 bits.
– Instrucciones de vectores
• 32 registros de vectores (VR) de hasta 128 bits.
•
•
•
Independiente de los registros para cada tipo de instrucciones, estas arquitecturas
implementar otros registros como LR (link register), CTR (Counter register), etc.
La cantidad de bits de estos registros dependerá de cada implementación.
Estas arquitecturas puede trabajar con datos enteros de 8,16,32 y 64 bits, de punto
flotante de 32 y 64 bits y vectores de 8,16,32 y 128 bits.
Set de instrucciones y Modos de operación
• La arquitectura Power ISA v2.03 define una extensión del set de
instrucciones llamada VLE (Variable Length Encoding). Este nuevo set
redefine muchas de las instrucciones UISA ( instrucciones de usuario) para
que poseen un opcode de 16 bits. De esta forman logran menor tamaño de
código y aumento de desempeño en aplicaciones particulares.
• Power ISA v2.03 define también una unidad SPE (Signal Processing
Engine).
• Los procesadores Power PC poseen dos modos de operación.
– Modo Supervisor ó Estado privilegiado.
– Modo usuario ó Estado problema.
Registros
•
•
En función del modo de operación es el
conjunto de registros que pueden ser
accedidos por el procesador.
Todas las arquitecturas e200 poseen 32
registros de propósito general.
– e200z0, e200z0h y e200z1, poseen registros
de 32 bits.
– e200z3 y e200z6, poseen registros de 64 bits.
•
Ninguna de las arquitecturas e200
implementa los registros de punto flotante ni
los registros de vectores.
– Es decir que las instrucciones de punto
flotante descripatas en Power Architecture
Book E floating-point no son soportadas por
hardware, pero pueden llegar a ser emulados
por software.
– Todas las instrucciones aritméticas que
ejecute el core se realizaran sobre los
registros de propósito general.
– Los core e200z3 y e200z6 implementa
registro de propósito general de 64 bits con
el fin de soportar las instrucciones de las
unidades de punto flotante (FPU) y
procesamiento digital de senales(SPE)
Bus de Comunicaciones
•
•
•
La gran mayoría de los procesadores Power PC posee una arquitectura de Bus tipo
Von Neumann.
Los core e200, son implementan ambos tipos de Bus (Von Neumann y Harvard)
El caso mas significativo es el e200z0 que posee un modelo Von Neumann, el
e200z0, y un modelo Harvard, el e200z0h.
Bus de Comunicaciones
• e200:
– e200z0, e200z6 - Von Neumann.
– e200z0h, e200z1, e200z3 – Harvard.
• e300 – Von Neumann.
• e500 – Von Neumann.
• e600 – Von Neumann.
• e5500 – Von Neumann*.
Excepciones
• La documentación de PPC utiliza las siguientes definiciones:
• Interrupción es la acción en la cual el procesador salva su viejo contexto y
comienza la ejecución de un handler de interrupción en una dirección
predeterminada.
• Excepciones son referenciadas como eventos los cuales, cuando están
habilitados, causan que el procesador realice una interrupción.
• El mecanismo de excepción de la arquitectura PPC produce un cambio de
modo del procesador, el cual pasa a modo supervisor.
•
Cuando sucede una interrupción, la información del estado del procesador
es salvada en los registros “machine state save/restore” (SRR0 y SRR1 para
interrupciones no criticas, CSRR0 y CSRR1 para interrupciones criticas,
DSRR0 y DSRR1 para interrupciones de debug) y el procesador comienza
la ejecución del handler de interrupción.
• La dirección del handler esta determinada por el registro IVPR (Interrupt
Vector Prefix register) y un valor de offset
Excepciones
• Múltiples condiciones de excepciones pueden ser mapeadas a un simple
vector de interrupción, y pueden ser distinguidas examinando registros
asociados con las interrupciones. El registro ESR (Exception Syndrome
register) se actualiza con información especifica de la excepción cuando la
interrupción sucede.
• Para
prevenir
perdidas
de la
información de estado, el handler de
interrupciones
debe
salvar
la
información almacenada en los
registros “machine state save/restore”,
tan pronto la interrupción ha sido
tomada.
Excepciones
• El hardware soporta el anidado
de interrupciones criticas dentro
de interrupciones no criticas y el
de interrupciones de debug dentro
de las otras dos.
• Los pasos en un proceso de
excepción son:
• Reconocimiento de la excepción.
• Se obtiene la dirección del
handler de la interrupción y se
salva en contexto.
• Ejecución del handler de
interrupciones
• Como es lógico pensar las
excepciones poseen prioridades.
Cores PPC e200 Comparativa
Productos
•
La línea de Power PC de Freescale es muy amplia, incluye microcontroladores y
microprocesadores.
•
Las líneas PPC podemos decir que estan orientadas a dos tipos de aplicaciones
fundamentales Networking.
– Plataforma QorIQ.
• Son procesadores de 32 y 64 bits, simple y multiple core (e500, e5500) integrados en 45nm.
– Plataforma PowerQUICC.
• Son procesadores de 32 bits basados en los core e300e, MPC603 (PPC G2), MPC8xxx (PPC G1).
– Host Processors
• Son procesadores de 32 bits basados en los core e500 y e600.
•
Y aplicaciones automotrices.
– Plataforma Qorivva MPC 55xx/MPC56xx
• Microcontroladores basados en distintas aplicaciones del core e200.
– Plataforma mobileGT
• Procesadores basados en los core MPC603 (PPCG2) y en los e300.
– Plataforma 5xx
• Microcontroladores y micropocesadores basados en la implementacion original PPC G1 (MPC8xx)
Productos
Herramientas Hardware-Software
• Freescale's CodeWarrior
Development Studio for
MPC55xx/MPC56xx v2.7,
versión gratis hasta 128K de
código.
• USBMLPPCNEXUS: USB
Power Architecture Nexus
Multilink
Conclusiones
• Procesadores pensados para el mismo tipo de mercados, si bien pueden
tener alguna diferencia a nivel arquitectura, no presentan grandes
diferencias. Por lo tanto la tarea puede ser realizada por cualquiera de ellos
sin una notoria diferencia del desempeño.
• La selección de un core en lugar de otro dependerá:
• De los periféricos que el dispositivo integre.
• Costo del dispositivo.
• Costo de herramientas.
• Portabilidad.
Conclusiones
¡¡¡¡¡COMPRE EN
ELECTROCOMPONENTES!!!!!
¡Muchas Gracias!
Electrocomponentes S.A.
Ing. Ignacio J. Zaradnik
[email protected]
Descargar