1 Arquitectura
1 Arquitectura
1 Arquitectura
Puede estar compuesto por varios núcleos. Un núcleo físico se refiere a una
porción interna del microprocesador cuasi-independiente que realiza todas
las actividades típicas de un CPU. Un núcleo lógico es la simulación de un
núcleo físico implementado por software a fin de ejecutar de manera más
eficiente el procesamiento.
http://www.cypress.com/psoc1.
Sistemas PC / SoC embebidos
Sectores industriales y militares comenzaron su uso en ciertas aplicaciones
donde la capacidad de computo de los microcontroladores estaba limitada.
11
Arquitectura
12
Arquitectura de un microprocesador
Un procesador consta principalmente de cinco: CPU, Memoria
primaria (RAM ROM), dispositivos de entrada-salida, conjunto de
buses (direcciones, datos y control) y la unidad de reloj.
La unidad central de procesamiento es la unidad que aporta la
capacidad de cómputo al sistema.
Bus de Direcciones
Microprocesador
Microprocesador
Unidad
UnidadCentral
Centralde
de
Procesamiento
Procesamiento(CPU)
(CPU)
Periféricos
Reloj
ROM RAM ALU de
Reloj
entradas de
entradas control
yysalidas control
salidas
Bus de
Control Registros
Registros
Bus de Datos
Arquitectura de un microprocesador
ATmega16 (atmel)
Arquitectura de un microprocesador
Oferta de Microcontroladores
Estructurada por “familias” y “subfamilias”.
Por ejemplo, cada familia tiene el mismo núcleo del
procesador (su código será compatible):
8051,PIC,HC,ARM
O son familias orientadas a la aplicación
O por desempeño (de diferente tipo)
Arquitectura de un microprocesador
Oferta de Microcontroladores
Arquitectura de un microprocesador
Oferta de Microcontroladores
Arquitectura de un microprocesador
Oferta de Microcontroladores
Arquitectura de un microprocesador
Oferta de Microcontroladores
Dentro de cada “familia” hay mucha variedad de
dispositivos
Pueden estar agrupados en “subfamilias”
Una forma de clasificación es en base a los
periféricos que integran o memoria
Arquitectura de un microprocesador
Oferta de Microcontroladores
Familia MC9RS08KA
Arquitectura de un microprocesador
Módulos internos
Arquitectura de un microprocesador
Unidad de procesamiento central (CPU)
Arquitectura de un microprocesador
Tipos de instrucciones
– Por stack
– Por acumulador
– Dos direcciones
– Tres direcciones
Arquitectura de un microprocesador
Modos de direccionamiento
Arquitectura de un microprocesador
Memoria: Direccionamiento
Separado
Arquitectura de un microprocesador
Memoria: Direccionamiento
Continuo
Arquitectura de un microprocesador
Memoria: Ejercicio
For (i=100;i>=0;i--)
Inadvertidamente i es almacenada en EEPROM
Inadvertidamente i esta implementada como unsigned
Como la EEPROM es lenta, cada iteración lleva, digamos,
10 ms
¿Que pasa al conectar el MCU?:
– el programa se cuelga
– Me doy cuenta, digamos, a los 10 segundos
– Empiezo a “debuggear” el programa (pero no apago el MCU)
microcontrolador?
Arquitectura de un microprocesador
Entradas y salidas digitales (GPIO)
Implementadas por pines de conexión directa al
exterior:
– Los MCU tienen en general de 8 a 32 pines (o más).
– Se agrupan en “ports” de a 8 pines.
– En general, los pines se pueden configurar como
entrada o salida
– La lógica puede ser positiva o negativa.
– Los pines pueden tener otras funciones alternativas.
Arquitectura de un microprocesador
Entradas y salidas digitales (GPIO)
•pin 1 del port B
•Módulo de
Interrupción 1 -
entrada 5
•Pin Tx de puerto
serie
•Conversor AD canal
5
Arquitectura de un microprocesador
Entradas y salidas digitales (GPIO)
Los pines se controlan mediante 3 registros:
– Data Direction Register (DDR): hay uno por cada
puerto y cada bit determina la dirección de un pin.
– Port Register (PORT): uno por cada puerto y cada bit
controla el estado del puerto (si es de salida)
– Port Input Register (PIN): uno por cada puerto y cada
bit da el estado de su respectivo pin, esté este
configurado como entrada o salida.
Arquitectura de un microprocesador
Entradas y salidas digitales (GPIO)
Arquitectura de un microprocesador
Entradas y salidas digitales (GPIO)
Arquitectura de un microprocesador
Entradas y salidas digitales (GPIO)
bit 7 bit 0
Ejemplo:
1000 0000
●
Apenas el DDR configura un pin como salida, el
MCU configura el nivel de salida del pin de acuerdo
al contenido del registro PORT correspondiente.
●
Cuidado con los cortocircuitos
●
Orden de configuración de DDR y PORT
Arquitectura de un microprocesador
Registro acumulador.
Registro de estado.
Registros auxiliares.
Registros internos.
Operación de un CPU [leer]
Hay cuatro pasos que la mayoría de los CPU usan para su
operación: fetch, decode, execute, y writeback.
El primer paso, leer (fetch), implica recuperar una
instrucción de la memoria de programa. Un contador
de programa (PC), también llamado instruction pointer
(IP), indica la ubicación en memoria de la instrucción
en turno.
Después de que se lee una instrucción, el Contador de
Programa es incrementado por la longitud de la palabra
de instrucción en términos de unidades de memoria.
Frecuentemente la instrucción, al ser leída de una
localidad de memoria relativamente lenta, provoca una
pausa en el CPU mientras se completa la transferencia
de la instrucción. Este problema en procesadores
modernos es corregido en gran parte por el uso de
cachés y las arquitecturas en pipeline.
Operación de un CPU [decodificar]
Hay cuatro pasos que la mayoría de los CPU usan para su
operación: fetch, decode, execute, y writeback.
En el paso de decodificación (decode), la instrucción
es dividida en partes que tienen significado para otras
unidades del CPU.
La manera en que el valor de la instrucción numérica
es interpretado está definida por la arquitectura del
conjunto de instrucciones del CPU.
Un grupo de números en la instrucción, llamados
opcode, indica qué operación realizar.
Las partes restantes de la instrucción proporcionan
información requerida, como por ejemplo los
operandos para una operación de adición, o una
localidad de memoria para re-ubicar algún valor (e.g.:
en un registro interno o en una dirección de memoria).
Operación de un CPU [ejecutar]
Hay cuatro pasos que la mayoría de los CPU usan para su
operación: fetch, decode, execute, y writeback.
En el paso de ejecución (execute) varias unidades del
CPU son conectadas de tal manera que la operación
pueda ser realizada.
Si, por ejemplo, se trata de una operación de adición,
la unidad aritmético lógica (ALU) será conectada al
conjunto de registros de entrada y de salida que
corresponda. Las entradas proporcionan los valores a
ser sumados, y las salidas recibirán el resultado final.
La ALU contiene la circuitería para realizar operaciones
de aritmética simple y de lógica tales como adición,
resta, corrimiento y operaciones booleanas (bitwise).
Los resultados de la operación no solo pueden afectar
el contenido del registro de salida sino que pueden
modificar los valores de algunos bits del registro de
estados o banderas (e.g. overflow, operación cero, ...).
Operación de un CPU [escritura]
Hay cuatro pasos que la mayoría de los CPU usan para su
operación: fetch, decode, execute, y writeback.
En el paso de escritura (writeback), los resultados del
paso de ejecución son transferidos a algún registro de
memoria. Ya sea a algún registro interno del CPU para
acceso rápido por subsecuentes instrucciones, o a la
memoria externa.
Algunos tipos de instrucciones manipulan el contador
de programa en lugar producir algún resultado en un
registro. Éstas operaciones de "saltos" (jumps) facilitan
la implementación de bucles (loops), la ejecución
condicional de programas (con el uso de saltos
condicionales), y la llamada de funciones dentro de los
programas.
Muchas instrucciones también verifican el estado del
registro de "banderas" (flags). Estas banderas pueden
ser usadas para modificar el flujo del programa.
Operación de un CPU Resumen
1. Fetch: La Unidad de Control <UC> recibe a través del
bus de datos, la instrucción contenida en la localidad de
memoria a la que apunta el contador del programa <C> y
se transfere al Registro de Instrucciones <RI>.
Bus de Direcciones
Memoria
MemoriaCentral
Central
Unidad
UnidadCentral
Centralde
de Bus de Control Memoria Memoria
Memoria Memoria
Procesamiento
Procesamiento RAM ROM
RAM ROM
(CPU)
(CPU)
Programa
ProgramayyDatos
Datos
Bus de Datos
e Instrucciones
57
Arquitectura von Neumann
Origen: Programas pre-cargados
La re-programación de 1ros. ordenadores
basados en relevadores/bulbos requería
la reestructura y/o re-diseño del sistema.
El proceso era laborioso y requería
detallados planes de ingeniería y en
ocasiones implicaba la completa re-
estructura física del ordenador.
El concepto de programa almacenado
revolucionó el diseño ya que un conjunto
de instrucciones podían ser almacenadas Herramientas de programación como ensambladores y
compiladores manejan las instrucciones como datos.
en memoria, junto con los datos, para ser Implicación: Se pueden "escribir programas para escribir
programas"
ejecutadas abriendo la posibilidad de que
se pudieran modificar ellos mismos
durante la ejecución. (Direccionamiento)
Arquitectura von Neumann
Inconvenientes
Compartir el bus de direcciones puede causar la sobre escritura en la sección
de memoria asignada para las instrucciones, ya sea por accidente o por mal
diseño. En algunos diseños simples, un mal funcionamiento del programa
puede dañar otros programas o inclusive el sistema operativo.
En ocasiones pueden llevar a un daño total en el ordenador.
@i IF DI Ex Wb
@i+1 IF DI Ex Wb
63
CISC (Complex instruction set computing)
Historia: En los años setenta los procesadores eran eran diseñados
considerando las limitaciones en la transferencia de datos entre el
procesador y la memoria. Bajo esa óptica, no tenía mucho sentido el
hacer procesadores más rápidos si la velocidad de acceso estaba
acotada por la tecnología de las propias memorias.
Los registros eran difíciles y costosos de implementar debido a sus
inter-conexiones.
Mínimo número de registros o registros enfocados a tareas específicas
Tenía sentido diseñar procesadores que minimizaran la transferencia
de información a las localidades de memoria se realizara sin
intermediarios.
Los diseñadores se enfocaron en crear conjuntos de instrucciones
específicas para cada posible operación o combinación de
entrada/salida de registros o memoria.
64
CISC (Complex instruction set computing)
Historia (cont.): La meta era proveer cada posible modo de
direccionamiento (combinación de registros) para cada instrucción. Un
principio conocido como ortogonalidad. Esto condujo a un CPU
complejo, pero en teoría capaz de configurar cada posible orden
individualmente, haciendo la ejecución más rápida en comparación del
uso de un grupo de órdenes simples.
65
CISC (Complex instruction set computing)
66
SISC (Simple Instruction Set Computing)
67
RISC (Reduced instruction set computing)
La arquitectura RISC es un diseño de CPU que está basado en
conjuntos de instrucciones simples, con muy pocos modos de
direccionamiento, lo que posibilita el paralelismo y la segmentación
de rutinas.
69
RISC (Reduced instruction set computing)
Objetivos del desarrollo de los RISC:
– Velocidad: Un número pequeño de instrucciones (opcode) permite
describirlas con pocos bits, dejando espacio dentro de la propia palabra o
instrucción para incluir en ella datos o constantes, reduciéndose el número
de accesos a registros o memoria para completar la información.
71
Instrucciones RISC
72
Características RISC
Conjunto de instrucciones Load/Store (Cargar/Almacenar): Sólo estas
instrucciones permiten el acceso a la memoria; las demás operaciones utilizan
el conjunto de registros para almacenar los resultados. Lo anterior simplifica el
direccionamiento y acorta los tiempos de acceso del CPU. También se facilita
la recuperación de fallos en paginas (page faults) cuando se emplea algún
esquema de memoria virtual.
75
Multiproceso
Tradicionalmente se ha tratado de mejorar las prestaciones de un procesador
aumentando su velocidad, sin embargo es posible construir sistemas, que aún
teniendo procesadores "lentos", ofrezcan prestaciones significativamente
superiores.
78
Multiproceso: Configuración de memorias
Multiprocesadores de memoria distribuida (distributed-
memory multiprocessors), también denominados como
CPU
CPU11
multiprocesadores vagamente acoplados (loosely coupled).
– Se caracterizan porque cada procesador sólo puede E/S
E/STyp1
Typ1
acceder a su propia memoria.
Memoria
Memoria11
– Se requiere comunicación entre los procesadores para E/S
E/STyp2
Typ2
coordinar las operaciones y mover los datos.
– Los datos pueden ser intercambiados, pero no pueden E/S
E/STyp3
Typ3
ser compartidos.
– Dado que los procesadores no comparten un espacio
CPU
CPU22
de direcciones común, no hay problemas asociados
con tener múltiples copias de los datos (no existe la
competencia por recursos), pero pueden ocurrir E/S
problemas de sincronía. E/STyp1
Typ1
Memoria
Memoria22
– Además de la complejidad de las interconexiones, una E/S
de las principales desventajas de estos sistemas, E/STyp2
Typ2
como es evidente, es la duplicación de recursos caros
E/S
E/STyp3
Typ3
como memoria, dispositivos de entrada/salida, que Bus de
además están desocupados en gran parte del tiempo. Interconexión
79
Multiproceso: Configuración de memorias
Multiprocesadores de memoria compartida (shared-
memory multiprocessors), también conocidos como multi-
procesadores estrechamente acoplados (tightly coupled CPU
CPU11
multiprocessors).
Memoria
– Son sistemas con múltiples procesadores que Memoria
comparten un único espacio de direcciones de
memoria.
– Cualquier procesador puede acceder a los mismos
CPU
CPU22
datos, al igual que puede acceder a ellos cualquier E/S
E/STyp1
Typ1
dispositivo de entrada/salida.
– El sistema de interconexión más empleado para estos E/S
E/STyp2
Typ2
casos, es el de bus compartido (shared-bus). Lo que CPU
CPU33
tiene el inconveniente de limitar las prestaciones del E/S
E/STyp3
Typ3
sistema a medida nuevos procesadores son
incorporados.
– La razón es la saturación del bus, es la lucha entre los Bus de
diferentes dispositivos y procesadores para obtener el Interconexión
compartido
control del bus, y hacer uso de el tanto para transferir (shared-bus)
datos como instrucciones.
80
Multiproceso: Configuración de memorias
Es evidente, que los sistemas actuales tienden al uso de arquitecturas de
memoria compartida, fundamentalmente por razones de costos, a pesar
del problema de la competencia por el bus.
81
Multitarea CISC (Notas)
82
Multitarea en procesadores CISC
La multitarea en la arquitectura CISC tradicional nunca ha sido real, tal como
en los RISC sí lo es. La cantidad de instrucciones complejas y diferentes,
evita la subdivisión de tareas, al menos a nivel lógico. Por lo tanto, la
multitarea es aparente y ejecutada en orden de prioridad.
Debido a que el usuario puede enfocarse en una sola tarea a la vez, el resto
de tareas que deja pendientes y que no son compatibles con el modelo de
traducción CISC/RISC, pasan a ser atendidas por el pipeline tradicional CISC.
De igual manera si se trata de tareas de bajo nivel, tal como tareas gráficas o
tareas de cálculo matemático intensivo, defragmentaciones de disco, chequeo
de la integridad de la información, formateo, etc. son atendidas también en
modo CISC.
84