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 tienen las siguientes etapas en una instrucción: – 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

r0 IRQUndefFIQSVCUserAbort ModeMode ModeMode ModeMode r1 r2 r3 Banked out Registers r4 r5 r6 User FIQ IRQ SVC Undef Abort r7 r8 r8 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) r15 (pc)

cpsr spsr spsr spsr spsr spsr 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 16- bits 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_ – 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_ – 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_ – Recuperar el PC desde el LR_ – 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 r14,r14,#4 ;r14-=4 STMFD sp!,{r0-r3,r12,r14 } ;save context LDR r0,=IRQStatus ;int status addr Disable int. LDR r0,[r0] ;get int status Save Context pc= vector table entry TST r0,#0x0080 ;if counter timer BNE timer_isr ;then branch to ISR spsr_{mode}=cpsr TST r0,#0x0001 ;else if button press BNE button_isr ;then call button ISR LMFD sp!, {r0-r3,r12,r14 } ;restore context LDR pc,=debug_monitor ;else debug monitor

Excepción Modo Prioridad Vector Interrupt handler Reset SVC 1 0x00 UI UND 6 0x04 SWI SVC 6 0x08 Enable int. Restore Prefetch Abort ABT 5 0x0C pc= lr-4 ISR Context cpsr=spsr_{mode} 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, 0.94 (ARM) / ARM7TDMI none (Von Neumann) Thumb 0.74 (Thumb) 5-stage pipeline

Thumb, ARMv5TEJ variable, ARM926EJ-S Jazelle DBX, 1.1 DMIPS / MHz (Harvard) TCMs, MMU Enhanced DSP

instructions 8-stage pipeline,

SIMD, Thumb, ARMv6 ARM1136JF-S Jazelle DBX, (VFP), variable, MMU 1.25 DMIPS/MHz (Harvard) Enhanced DSP

instructions Cores ARM comparativa

Cache (I/D)/ Core Arq. Características MIPS @ MHz MMU ARMv6-M 3-stage Cortex-M0 No cache. 0.9 DMIPS/MHz (Von Neumann) Thumb, Thumb-2. 3-stage + branch no cache, Cortex-M3 ARMv7-M (Harvard) speculation 1.25 DMIPS/MHz MPU optional . Thumb, Thumb-2. 3-stage + branch

speculation no cache, Cortex-M4 ARMv7-ME (Harvard) 1.25 DMIPS/MHz Thumb, Thumb-2, MPU optional .

Floating Point Unit, DSP. 2.0 DMIPS/MHz ?-stage superscalar variable (L1+L2), in speed from 600 Cortex-A8 ARMv7-A pipeline, ARM,VFP, MMU+TrustZone MHz to greater than NEON,Thumb, Thumb-2. 1 GHz

Cores ARM comparativa

Cache (I/D)/ Core ARMv7-M (Harvard) Características MIPS @ MHz MMU

8-stage Superescala (OoO) variable (L1+L2), 2.5 DMIPS/MHz Thumb, Thumb-2, ARMv7-M (Harvard) MMU+TrustZone Cortex-A9 Jazelle,DSP, SIMD NEON Hasta 2Ghz ,FPU

12-stage Superescala (OoO) variable (L1+L2), Cortex- Thumb, Thumb-2, ARMv7-M (Harvard) MMU+TrustZone Hasta 2.5Ghz A15 Jazelle,DSP, SIMD NEON ,FPU 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 • Codecs • Linux OS • ARM LTD • DivX • Monta Vista • Code Sourcery • Visual On • Wind River • Green Hills • Actimagine • Timesys • IAR Systems • Mentor Graphics • Browsers • Development Boards • Microcross • Opera • Logic PD • Wind River • Phytec • Access • Eurotech • iWave En sistemas embebidos, un ► RTOS • Java • Atmark paquete de soporte de • Express Logic • Aplix • Kyoto • Green Hills • Aonix • Cogent placa (board support • Mentor Graphics • karo • Micrium • Navigation package (BSP) ) es una • Segger Systems • Elektrobit • VoIP/V2IP implementación de código • Quadros • NavinGo • Trinity • QNX Convergence para una placa especifica • Wind River • Graphics • ITRI que conforma el sistema • Mazatech • Hellosoft • Yappa • SpiritDSP operativo. Comúnmente • AGS • Flash tiene un bootloader que • Adobe • Other • Bsquare contiene el soporte mínimo • Futuremark • Calsoft • Nuance para los dispositivos para • Loquendo • GUI/UI/HMI cargar el sistema operativo • Virtual Logix • Trolltech • Cidana • Mentor y los controladores para • QNX todos los dispositivos de la • Swell SW • Altia placa. • Fluffy Spider Herramientas - Hardware

►JTAG Tools PEEDI - JTAG/BDM/SWD Emulator and Flash • ARM LTD Programmer • American Arium • Green Hills PEEDI is an EmbeddedICE solution that enables you to • IAR Systems debug software running on ARM, CORTEX-M3, • Kyoto CORTEX-A8, Power Architecture, ColdFire, Blackfin, Microsystem MIPS32, AVR32 processor cores via the • Lauterbach JTAG/BDM/SWD port. PEEDI provides the services • Macragigor needed to perform all debugging operations Systems • Mentor Graphics • Sophia Systems • Signum • Wind River

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

Cache (I/D)/ Core Arquitectura Características MIPS @ MHz MMU 3-stage pipeline,

Set de intrucciones de Entre 16 y 32 bits. 1.4 y 1.25 AVR32A AVR32UC Instrucciones de DSP. MPU opcional DMIPS/Mhz. (Harvard) Flash Vault. 91MIPS/66Mhz Unidad de punto flotante 61MIPS/50Mhz opcional. 7-stage pipeline

Set de intrucciones de Cache de AVR32B 16 y 32 bits. intrucciones y 1.4DMIPS/Mhz AVR32AP (Harvard) Unidad de punto flotante datos 210MIPS/150Mhz Instrucciones de DSP y MMU SIMD 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 CF V1 Core V2, periphal 8bits No cache. (Von Neumann) 50Mhz VLI (Varible Length Instruction) 3-stage 0.95 DMIPS/Mhz ISA A, ISA A+ CF V2 EMAC, FPU No cache 76MIPS@80Mhz (Von Neumann) VLI (Varible Length Instruction) 5-stage 0.88 DMIPS/Mhz ISA A+ EMAC, FPU and exta MAC CF V3 Cache 211MIPS@240Mhz (Von Neumann) optinal VLI (Varible Length Instruction)

9-stage superscalar 1.54 DMIPS/Mhz ISA B, ISA C CF V4 pipeline, EMAC, FPU Cache / MMU 410MIPS@266Mhz (Harvard) VLI (Varible Length Instruction) 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 ) 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, - Applied Micro Circuits Corporation (AMCC). – PowerPC 7xx - IBM / Motorola (freescale). – – 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 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]