arm cortex-m3 informe: el procesador arm cortex-m3 ...· benchmarks en c compilados con keil sin...

Download ARM Cortex-M3 Informe: El procesador ARM Cortex-M3 ...· Benchmarks en C compilados con Keil sin optimizaciones

Post on 03-Nov-2018

225 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • ARM Cortex-M3

    Informe:

    El procesador

    ARM

    Cortex-M3

    DECLASSIFIED

    1/80

  • ARM Cortex-M3

    Procesador Cortex-M3core Cortex-M3 Harvard 3-stage pipeline + branch speculation arquitectura ARMv7-M 1,25 DMIPS/MHz Thumb-2 single-cycle hardware multiplier hardware divide

    NVIC determinstico, baja latencia, 240 IRQs, 255 prioridades* Bit banding Sleep modes PMU (PMSA) opcional Embedded trace opcional

    2/80

  • ARM Cortex-M3

    Cortex-M4: similarARMv7-M + DSP extension (ARMv7-ME)instrucciones adicionales de uso en DSP (saturacin)

    3/80

  • ARM Cortex-M3

    instrucciones SIMDsingle-cycle MACFPU (opcional) (Cortex-M4F)

    4/80

  • ARM Cortex-M3

    Cortex-M4 vs. Cortex-M3 en DSP

    5/80

    16-bits

    32-bits

  • ARM Cortex-M3

    Cortex-M4 vs. Cortex-M3 en DSP: FIR

    tomado de una presentacin de la empresa Ittiam

    6/80

  • ARM Cortex-M3

    Cortex-M7: similarARMv7-M + DSP extension (ARMv7E-M)core Cortex-M7 Harvard 6-stage dual-issue superscalar pipeline + branch speculationresto dem M4 2,14 DMIPS/MHz

    Incluye cachesPara apalear la falta de determinismo, re-inventa la TCM de ARM9I cache, D cache, I TCM, D TCM

    Utiliza AXI (en vez de AHB-Lite) para acceso a memoriaSu arquitectura interna es diferente a M3/M4

    7/80

  • ARM Cortex-M3

    Procesador Cortex-M0core Cortex-M0 Von Neumann 3-stage pipeline ARMv6-M 0,9 DMIPS/MHz Subset de Thumb (v2)

    16-bitsBL (call), MRS/MSR (excepciones), ISB/DSB/DMB (pipeline, sync)

    no incluye otras instrucciones de 32-bits (Thumb o ARM) NVIC ms reducido que Cortex-M3, NMI + 32 IRQs, 4 prioridades AHB-Lite Sleep modes, WICCore ms chico para ser ms econmico y de menor consumoNo Trace, no bit banding, sin niveles de privilegio, sin hw divide, el multiplicador single-cycle es opcional.

    Cortex-M0+: 2-stage pipeline niveles de privilegio, trace reducido (opcional)

    8/80

  • ARM Cortex-M3

    9/80

  • ARM Cortex-M3

    Benchmarks en C compilados con Keil sin optimizaciones en assemblerAparentemente micros a igual velocidad de clock, y pareciera que el MSP430 se us para normalizarTomado de una presentacin de ARM disponible en la web

    10/80

  • ARM Cortex-M3

    Postulados axiomticos

    Con cualquier herramienta se puede hacer cualquier trabajo

    Ej: se puede poner un clavo con un destornillador, golpendolo de culata. Se puede poner un tornillo con un martillo, entrndolo a los golpes.

    Con la herramienta adecuada se hace el trabajo de forma

    ms eficiente

    Ej: con el destornillador, el tornillo entra ms fcil y forma la rosca, siendo msdifcil sacarlo. Con el martillo, el clavo entra ms fcil.

    11/80

  • ARM Cortex-M3

    Corolario

    Con cualquier micro se puede realizar cualquier tarea.

    Cualquier micro se puede programar en C. Un micro con un

    set de instrucciones "C-friendly" o "C-compatible" va a

    permitir que el compilador genere cdigo ms compacto que

    se ejecute de forma ms eficiente y ocupe menos espacio de

    memoria.

    12/80

  • ARM Cortex-M3

    13/80

    Qu

    es

    un set de instrucciones

    "C-compatible" ?

  • ARM Cortex-M3

    En C, todas las operaciones se realizan sobre enteros (a menos que se especifique lo contrario) => 32-bits Promocin

    Desplazamientos a izquierda y derecha Bitfields Variables globales:

    direccionamiento directo el dato se encuentra en una posicin de memoria,

    especificada por su direccin absoluta (o una reduccin unvoca de sta) en la instruccin

    Punteros: direccionamiento indirecto

    el dato se encuentra en una posicin de memoria, cuya direccin est contenida en un registro, que oficia de puntero, referido en la instruccin.

    14/80

  • ARM Cortex-M3

    El puntero puede opcionalmente incrementarse o decrementarse antes o despus del acceso a memoria indirecto pre- o post-incrementado y pre- o post-

    decrementado, respectivamente. Arrays:

    direccionamiento indexado similar al indirecto, se agrega un desplazamiento respecto

    al valor indicado por el registro que oficia de base. Dicho desplazamiento puede estar contenido o

    referenciado (un registro) en la instruccin Hilando fino, el direccionamiento indirecto entonces,

    sera un caso particular del indexado en el que constante = 0 y no se utiliza registro.

    Variables locales -> registros => gran cantidad de registros Set de instrucciones ortogonal

    15/80

  • ARM Cortex-M3

    Modos de direccionamiento en ARM

    Variacin del modo indexado. ARM propone un desplazamiento con signo y la

    modificacin del registro base por el desplazamiento pre-incrementado y pre-decrementado -> pre-indexado post-incrementado y post-decrementado -> post-indexado.

    16/80

  • ARM Cortex-M3

    Offset direccionamiento indexado puro, sin modificaciones en el

    valor del ndice.El offset a su vez puede ser:

    17/80

  • ARM Cortex-M3

    Inmediato el desplazamiento respecto de la base es una constante, y se encuentra dentro de la instruccin (no requiere bytes adicionales).

    miembro de una estructura parmetros de una funcin pasados en el stack.

    18/80

    R0

    R1

    +

    LDR R1 [R0, #offset]

    offset

  • ARM Cortex-M3

    Registro el desplazamiento respecto de la base se halla especificadopor un registro.

    elementos de un array. Escalado

    barrel shifter, tamaos comunes de elementos de un array, siempre que sean potencias de 2.

    19/80

    R0

    R2

    +

    LDR R2 [R0, R1, LSL #n]

    R1

    n

    Barrel

    Shifter

  • ARM Cortex-M3

    Pre-Indexado el desplazamiento indicado se suma o resta al registro base antes de realizar la operacin, alterando su valor y permitiendosu utilizacin iterada en varios accesos dentro de, por ejemplo, un array.

    Post-Indexado el desplazamiento indicado se suma o resta al registro base despus de realizar la operacin, con igual finalidad.

    20/80

  • ARM Cortex-M3

    ARM no posee direccionamiento directo cualquier referencia a una posicin absoluta de memoria

    debe hacerse cargando primero un registro con el valor de la direccin de memoria y luego accediendo mediante ese registro. Es poco comn acceder en una funcin a posiciones fijas

    de memoria que no tengan una referencia base (estn dentro de una estructura o un array).

    An en I/O, los accesos no suelen ser slo uno, sino varios, de modo que el utilizar un registro base resulta(ra)ms eficiente a la larga

    21/80

  • ARM Cortex-M3

    obvia e inmediata pregunta:

    Cmo cargamos una direccin absoluta de memoria, es

    decir, un valor fijo en un registro?

    22/80

  • ARM Cortex-M3

    Tcnicamente, ARM no posee direccionamiento inmediato. Existen constantes inmediatas embebidas en la instruccin

    no cubren el rango completo de 32-bits por razones obvias.

    Se aloja dicho valor en alguna posicin de memoria fija cercana y se accede con los modos de direccionamiento vistos, usando el PC como registro base y un offset fijo.

    23/80

    PC

    R1

    +

    LDR R1 [PC, #offset]

    offset

    Leibel

    LDR R1, Leibel

  • ARM Cortex-M3

    Barrel Shifter

    Circuito secuencial capaz de desplazar una palabra binaria un nmero determinado de bits en un ciclo de clock.Acelera notablemente las operaciones de normalizacin y la generacin de potencias de 2.

    ARM incorpora un barrel shifter en uno de los operandos de la ALU, de modo que en las operaciones de procesamiento es posible afectar uno de los operandos por un desplazamiento lgico o aritmtico, o incluso una rotacin. El barrel shifter tambin es aplicable a las operaciones de carga, de modo de soportar el direccionamiento offset con registro escalado

    24/80

  • ARM Cortex-M3

    Modos de operacin, privilegios, stacks

    El procesador puede operar en uno de dos modos: THREAD

    modo normal de operacin, en el que el micro inicia al reset, y al que se vuelve luego de terminar de procesar excepciones.

    HANDLER modo en el que el procesador est procesando una

    excepcin.

    25/80

  • ARM Cortex-M3

    El modo HANDLER es un modo privilegiado, mientras que en el modo THREAD, el procesador tiene a su vez dos niveles de privilegio:

    PRIVILEGIADO, en el que puede acceder a todos los recursos

    NO-PRIVILEGIADO, en el que se limitan ciertos recursos sensibles para la operacin del sistema.

    En el modo HANDLER, el procesador utiliza el stack principal.En el modo THREAD, el procesador puede utilizar un stack alternativo si el sistema se configura para esto.

    26/80

  • ARM Cortex-M3

    27/80

    Thread

    Thread

    PrivilegiadoHandler

    No Privilegiado

    Excepcin

    Retorno

    Excepcin

    Retorno

    Abdicacin

    RESET

  • ARM Cortex-M3

    Registros

    28/80

    R0

    R1

    R2

    R3

    R4

    R5

    R6

    R7

    R8

    R9

    R10

    R11

    Registros alternativos segn el modo de trabajoRegistros

    R15/PC

    R14/LR

    R12

    R13/MSP R13/PSP

    Thread

  • ARM Cortex-M3

    El registro SP puede configurarse para ser diferente en modo THREAD, de modo de poder separar stacks y aumentar la resistencia a errores de programacin, an sin hardware de control de acceso a memoria como una MPU.

    29/80

  • ARM Cortex-M3

    Program Status Registers El estado del procesador puede observarse en el PSR (CURRENT PROGRAM STATUS REGISTER). Este registro es nico y contiene a su vez tres registros espe

Recommended

View more >