Laboratorio de Electrónica Universidad de San Carlos de Guatemala Primer Semestre 2017
Overview 1
Cortex La más usada para dispositivos móviles Encoding por 32 bits, excepto Thumb y Thumb-2 15x32bits registros integer de propósito general Hasta 32x64bits registros de punto flotante
Cortex (Extensiones) Thumb Thumb-2 Neon Jazelle
v7 Define tres perfiles: A-profile, R-profile, M-profile Incluye FPU por hardware. v6-m se entiende como un downgrade (usado por Cortex-M0/M0+/M1)
Cortex-M SysTick Timer Bit- banding MPU Data endianness Interrupciones Hasta 5 watchpoints Hasta 9 breakpoints
Cortex-M
Cortex-M4F VFPv4 Cortex-M3+DSP=Cortex-M4 3 etapas de pipelining Texas Instruments LM4F, TM4C, MSP432 pertenecen a este grupo
Modos del CPU modo de usuario FIQ (fast interrup request) IRQ SVC (supervisor) modo abort indefinido (instruction exception) modo de sistema (v4 y posteriores) modo de monitor modo Hyp (hypervisor) modo thread (RTO y bare-metal super-loops) modo handler
Elementos del Lenguaje de Máquina Registros para aritmética, direccionamiento y funciones de control. Posiciones de memoria y offsets. Modos de direccionamiento.
Instruction Set Architecture ISA expresa un programa en un nivel elevado, haciendo más sencilla la lectura. Incluye una especificación del set de opcodes y los comando utilizados para un procesador en específico. opcode (operation code, instruction syllable, opstring) Especifica la operación a ser ejecutada. La mayoría de instrucciones acompañan el opcode con la información a procesar (operandos).
Instruction Set Architecture microarquitectura implementación de una ISA en un procesador específico. Existen distintas uarq para cada ISA debido a los objetivos o cambios en tecnología. las instrucciones deben ser independientes de la implementación
Tipos de Manejo de datos y operaciones de memoria Operaciones lógicas y aritméticas Control flow De coprocesador Complejas
Longitud de Instrucción más simples permiten velocidades de ejecución altas, tamaños de procesador reducidos y bajo consumo de potencia. más complejas optimizan operaciones comunes, hacen más eficiente el uso de caché y simplifican la programación.
CISC vs RISC CISC 1 complejas 2 Tamaño variable (1 a 15 bytes) 3 Ejecución variable (2 a 10 ciclos de reloj) 4 Pocos registros de propósito general 5 Programas cortos 6 chips CISC hacen todo el procesamiento RISC 1 Menos instrucciones 2 Tamaño fijo (16 o 32 bits) 3 Ejecución fija (1 ciclo de reloj) 4 Varios registros de propósito general 5 La velocidad de reloj suele ser mayor* 6 RISC distribuye algunas partes de su procesamiento a otros chips
Densidad de Código Minimizar el tamaño de los programas para caber en la memoria fue esencial por un tiempo (CISC), RISC sacrifica la densidad para simplificar la implementación y trata de compensarlo por mayores velocidades de reloj y registros; sin embargo requiere más instrucciones. Algunas ISAs RISC como Thumb implican altas densidades debido a la compresión. MISP suele tener distintos anchos (16 a 64 bits), así que muchas instrucciones pueden acomodarse en una sola palabra. Requiere poco silicio para implementarse, así que puede ser diseñado con FPGA.
Otros Sets MISP: Microprocessor Without Interlocked Pipeline Stages (MISP32-32 bits) VLIM: Very Long Instruction Word OISC: One Instruction Set Computing (URISC)
Pipelining y Latencia Pipelining: Técnica basada en el parelelismo. Permite aumentar el número de instrucciones que pueden ejecutarse en un ciclo de reloj (rendimiento). La instrucción básica se divide en una serie llamada pipeline (referente a tuberías). Esto permite aumentar el rendimiento pero no reduce la latencia (tiempo de inicio a fin para una instrucción). Pipeling aumenta el rendimiento a costo de la latencia, usualmente usado en CPUs pero evitado en RTS.
RISC suele implicar 1 instruction fetch IF 2 instruction decode (propuesto por IBM) ID 3 execute EX 4 memory access MEM 5 register write back WB PIC tiene dos etapas Pentium 4 tiene 20 etapas Pueden alcanzarse hasta mil etapas Se puede lidiar con peligros creando burbujas
de Memoria
Debugging v7 define facilidades de debug a nivel de arquitectura con breakpints, watchpoints e instruction execution