PROGRAMACIÓN DE MICROPROCESADORES ING. JONATHAN S. DELGADO GUERRERO ([email protected] ) UNIDAD #1: INTRODU
Views 135 Downloads 0 File size 1MB
PROGRAMACIÓN DE MICROPROCESADORES ING. JONATHAN S. DELGADO GUERRERO ([email protected] )
UNIDAD #1: INTRODUCCIÓN AL MICROPROCESADOR
1. INTRODUCCIÓN AL MICROPROCESADOR 1.1 La evolución del microprocesador. 1.2 Arquitectura básica del microprocesador. 1.3 La memoria y el microprocesador. 1.4 Dispositivos de memoria. 1.5 Decodificación de la dirección. 1.6 Sistemas de numeración y formato de datos usados en Sistemas de microprocesadores.
INTRODUCCIÓN AL MICROPROCESADOR El microprocesador (μP) es es el circuito integrado central y más
complejo de un sistema informático. El μP se lo puede estudiar desde dos puntos de vista: su hardware y
su software. Dentro del hardware tenemos: Unidad Central de Proceso (CPU),
memoria, los puertos de ENTRADA/SALIDA(E/S), el reloj y la circuitería lógica de control.
Dentro del software, tenemos la programación del hardware para
tareas de control, donde se utiliza un lenguaje de muy bajo nivel llamado Ensamblador.
INTRODUCCIÓN AL MICROPROCESADOR Ley de Moore
Gordon Earl Moore
INTRODUCCIÓN AL MICROPROCESADOR
INTRODUCCIÓN DEL MICROPROCESADOR
ELEMENTOS BÁSICOS DE UN MICROPROCESADOR
ALU (UNIDAD ARITMÉTICA – LÓGICA / ARICHMETIC LOGIC UNIT)
Dispositivos de Adición. Registros: Son los que contienen los operandos que permiten realizar las operaciones, Resultados Parciales: Fragmentos de cálculos que fueron realizados Resultados Finales: Resultados propiamente dichos de los cálculos efectuados Control de Cálculo: Dispositivo que se encarga de controlar, redirigir y corregir los errores que se puedan
haber cometido en las operaciones realizadas
ALU (UNIDAD ARITMÉTICA – LÓGICA / ARICHMETIC LOGIC UNIT)
Además de los operadores lógicos y aritméticos, la ALU cuenta con una serie de registros para almacenar los
datos, y bits de información sobre los resultados, también llamados banderas (flags).
Las banderas más comunes son: Carry, Auxiliary Carry, Borrow, Overflow, Parity, Zero.
PARTES DE LA ALU
Sumador/restador rápido Operadores lógicos (AND, OR, XOR, NOT) Un acumulador y un registro auxiliar Un registro de salida Señales de control que indiquen la operación a realizar. Registro de banderas de estatus
BUS DE CONTROL Es la conexión física, utilizada por la CPU para comunicarse con otros dispositivos dentro de la computadora. El
bus de control transmite comandos desde la CPU y devuelve una señal de estado desde el dispositivo.
Líneas principales (puede variar):
Read o Leer: Una línea única que cuando es activada (cero lógico) indica que el dispositivo está siendo leído por la CPU. Write o Escribir: Una única línea que cuando está activada (cero lógico) indica que el dispositivo está siendo escrito por la CPU. Byte enable: Un grupo de líneas que indican el tamaño del dato (8, 16, 32, 64 bytes).
BUS DE DIRECCIONES
Bus unidireccional, de la CPU a la memoria ó a los elementos de entrada y salida. La CPU coloca niveles lógicos en las n líneas de dirección, con la cual se genera 2n posibles direcciones
diferentes.
Estas direcciones corresponde a una localidad de la memoria ó dispositivo de E / S.
Este bus se utiliza para direccionar las zonas de memoria y los dispositivos (que recordemos son tratados como
si de posiciones de memoria se tratasen), de forma que, al escribir una dirección en el bus, cierto dispositivo quede activado y sea quien reciba-envíe los datos en el ciclo de bus así empezado.
Es un bus triestado unidireccional, por lo que puede ponerse en alta impedancia e ignorar lo que ocurre en el
exterior (al tiempo que no influir en el estado de las líneas), pero solo permite la escritura del bus. Esto último es razonable, puesto que la lectura del bus de direcciones no es de utilidad para el uP, al ser él mismo quien gestiona el direccionamiento.
Este bus se compone de 32 líneas, A31 hasta A0, lo que permite direccionar 2^32 posiciones de memoria: un total
de 4Gigabytes. Contrariamente a los modelos anteriores, A0 es una línea plenamente utilizada, lo que elimina la necesidad de la existencia de /UDS y /LDS.
BUS DE DATOS
Este es un bus bidireccional, pues los datos pueden fluir hacia o desde la CPU. Los m terminales de la CPU, de D0
- Dm-1, pueden ser entradas o salidas, según la operación que se esté realizando (lectura o escritura ) . En todos los casos, las palabras de datos transmitidas tiene m bits de longitud debido a que la CPU maneja palabras de datos de m bits; del número de bits del bus de datos, depende la clasificación del microprocesador.
El bus de datos lo forman las líneas D31 a D0, siendo este bidireccional y de tipo triestado.
Su uso se centra en la transmisión de datos entre el uP y los demás dispositivos del sistema, permitiendo la conexión de varios dispositivos simultáneamente sin interferencia alguna.
El microprocesador 68020 presenta por primera vez un bus de datos de 32 bits, lo que le permite el soporte y la
transferencia de los formatos de datos byte, palabra y palabra larga. De esta forma, se preserva la compatibilidad descendente con los modelos anteriores de Motorola.
Además, suma la capacidad de adaptar dinámicamente el tamaño del bus para asegurar el conexionado con todo
tipo de periféricos, pudiendo enviar 1, 2, 3 o 4 bytes indistintamente.
BUS DE CONTROL VS BUS DE DATOS VS BUS DE DIRECCIÓN
ARQUITECTURA DE UNA PC
TALLER # 1 ¿Qué significan las siglas CISC, MIPS,VGA, RISC, WYSIWYG? Con base en la lectura, ¿cuál es su opinión considerando la evolución de los microprocesadores y la Ley de
Moore?
¿Por qué fue necesario desarrollar microprocesadores de 32 bits? ¿Qué hacían de diferente los primeros microprocesadores en cuanto a la administración de la memoria? ¿Cuáles son las principales similitudes entre los microprocesadores 8086, 8088 y 80286? ¿Qué material semiconductor se usó principalmente para desarrollar los primeros microprocesadores de Intel? ¿Cómo funcionaba la caché L2 en los microprocesadores Pentium II y Xeon?
HYPERTHREADING
COMPUTADOR
CPU Unidad de control Unidad aritmética y lógica Registros
Dispositivos de E/S
Memoria principal
Disco
Impresora
Bus
MEMORIA
Para almacenar programas y datos. Unidad básica el bit. Se divide en celdas. Cada celda se identifica por una dirección. Byte = 8 bits : unidad más pequeña direccionable Los bytes se agrupan en palabras. La mayor parte de las instrucciones operan sobre palabras.
MEMORIA
Los bytes en una palabra se pueden numerar de izquierda a derecha (“big endian”, Motorola) o de derecha a
izquierda (“little endian”, Intel).
Problema: la falta de una norma en el ordenamiento produce incompatibilidad en la transferecia de datos. No se
soluciona con el intercambio de los bytes.
Posible solución: incluir un encabezado en los datos que indique el tipo y el tamaño de los datos.
DISPOSITIVOS DE MEMORIA
MEMORIAS ( JERARQUÍA ) El PC utiliza la memoria para acceder rápido a la
información. El disco es más lento, pero es necesario porque la
información en la RAM del sistema no es permanente. – Los datos vienen de los dispositivos de entrada (ej. teclado), o del disco. – Siempre van a parar a la RAM del sistema. – La CPU almacena en la caché los fragmentos de información a los que accede. – La CPU mantiene en los registros información para las instrucciones que ejecuta.
26
MEMORIA SECUNDARIA
Cintas magnéticas Discos magnéticos Discos flexibles Discos ópticos Discos RAM
Se utiliza como disco una parte de la memoria principal previamente reservada.
Ventajas: acceso instantáneo, facilidad para un ordenador sin disco.
DISPOSITIVOS DE E/S
Para la comunicación con el exterior. Distintos dipositivos:
Terminales
Modems
Ratones
Impresoras
Dos enfoques diferentes.
ENFOQUE 1 Utilizado en grandes computadores.
Memoria principal Bus de memoria Bus de E/S
CPU
Procesadores de E/S (canales)
Controlador de terminales Impresora Terminales
Discos
ENFOQUE 2 Utilizado en computadores personales
CPU
Memoria
Monitor
Teclado
Unidad de disco
Contr. de video
Contr. de teclado
Contr. de disco
El controlador maneja la E/S al dispositivo y el acceso al bus. Funcionan con interrupciones o mediante DMA El arbitrador decide quién accede al bus.
Bus
EJECUCIÓN DE UNA INSTRUCCIÓN Extrae de la memoria la siguiente instrucción, la lleva al IR Incrementa PC Determina el tipo de la instrucción Comprueba si la instrucción necesita datos de la memoria Extrae los datos y los carga en los registros Ejecuta la instrucción Almacena los resultados en el lugar apropiado Va al primer paso
EJECUCIÓN DE INSTRUCCIONES EN PARALELO Máquinas cada vez más rápidas
Existen límites físicos
Es muy caro
Se puede conseguir con varias ALU’s o varias CPU’s Las máquinas paralelas se dividen en 3 categorías (Flynn,1972), según el nº de instrucciones y datos:
SISD: flujo
de instrucciones simple, flujo de datos simple.
SIMD: flujo
MIMD: flujo
de instrucciones simple, flujo de datos múltiple. de instruc. múltiple, flujo de datos múltiple.
MÁQUINAS SISD (: FLUJO DE INSTRUCCIONES SIMPLE, FLUJO DE DATOS SIMPLE)
Un programa y un conjunto de datos. Se extrae una instrucción y se ejecuta, se extrae otra y así. Se logra el paralelismo extrayendo e iniciando la siguiente instrucción antes
de terminar aquella en curso.
Dos modelos:
varias unidades funcionales
procesamiento en línea
VARIAS UNIDADES FUNCIONALES La UC extrae una instrucción, la manda a una unidad funcional, extrae la siguiente y así hasta que no se pueda avanzar. Se supone que el tiempo en ejecutar una instrucción es mayor que en extraerla.
Registros
+
+
-
x
+
PROCESAMIENTO EN LÍNEA Consiste en separar la ejecución de cada instrucción en partes. Cada parte la ejecuta una unidad de procesamiento de la CPU. UP1 Unidad de extracción de instrucción
UP2
UP3
Analizador de instrucciones
Unidad de cálculo de direcciones
P1
1
P2
UP5
Unidad de extracción de datos
Unidad de ejecución de instrucciones
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
1
2 1
3 2
4 3
5 4
6 5
P3 P4 P5 1 8
UP4
2
3
4
5
6
7
t
MÁQUINAS SIMD (FLUJO DE INSTRUCCIONES SIMPLE, FLUJO DE DATOS MULTIPLE)
Un programa con múltiples conjuntos de datos Dos modelos:
Máquinas vectoriales
Procesadores de arreglos
MÁQUINA VECTORIAL
Para cada entrada de la ALU se tiene un vector con n entradas y no una sóla variable. La ALU es una unidad vectorial capaz de realizar operaciones con vectores.
vector de entrada A
vector de entrada B
vector de salida A+B
PROCESADOR DE ARREGLOS Consiste de una malla cuadrangular de elementos procesador/memoria, que reciben las instrucciones de la UC, éstas son ejecutadas por todos los procesadores.
U.C
malla de procesador-memoria de 8x8
MÁQUINAS MIMD (FLUJO DE INSTRUC. MÚLTIPLE, FLUJO DE DATOS MÚLTIPLE) Distintas CPU’s manejan distintos programas compartiendo a veces una memoria común. Multiprocesador: Dificultades si un gran nº de procesadores pretende acceder a la memoria a través del bus.
CPU
CPU
CPU
Memoria compartida
CPU
Bus
MÁQUINAS MIMD
Posibles soluciones:
Memoria local a cada procesador donde se almacena datos y programas no comunes.
memorias locales
CPU
CPU
CPU CPU
memoria compartida
Tener más de un bus.
Usar memoria caché: técnica para mantener en cada procesador las palabras de memoria usadas con mayor frecuencia.
REGISTROS
Memoria de alta velocidad y poca capacidad, integrada al microprocesador. Permite guardar transitoriamente y acceder a valores muy usados, generalmente en operaciones matemáticas. Se miden generalmente por el número de bits que almacenan.
TIPOS DE REGISTROS Los registros de datos se usan para guardar números enteros. En algunas computadoras antiguas, existía un único
registro donde se guardaba toda la información, llamado acumulador.
Los registros de memoria se usan para guardar exclusivamente direcciones de memoria. Eran muy usados en la
arquitectura Harvard, ya que muchas veces las direcciones tenían un tamaño de palabra distinto que los datos.
Los registros de propósito general (en inglés GPRs o General Purpose Registers) pueden guardar tanto datos como
direcciones. Son fundamentales en la arquitectura de von Neumann. La mayor parte de las computadoras modernas usa GPR.
Los registros de coma flotante se usan para guardar datos en formato de coma flotante. Los registros constantes tienen valores creados por hardware de sólo lectura. Por ejemplo, en MIPS el registro cero
siempre vale 0.
Los registros de propósito específico guardan información específica del estado del sistema, como el puntero de pila
o el registro de estado.
MICROPROCESADOR 8086 Y 8088
REGISTROS DE DATOS (GENERALES, O MULTIPROPÓSITO) (AX, BX, CX,DX)
Son los más utilizados por los programas, debido a que son
usados para almacenar datos.
Existen 4 (AX, BX, CX y DX), cada uno de 16 bits. Cada uno de estos registros se subdivide además en dos
registros de 8 bits (1byte) que se denominan con la misma letra que el registro completo pero terminado en H si se refiere al byte superior (8 bits más significativos del registro) o en L si se refiere al byte inferior (8 bits menos significativos del registro).
AX o Acumulador: Es el registro principal, se usa en operaciones de multiplicación, división y operaciones
matemáticas especializadas y en ciertas operaciones de E/S y conversión, en alguna de estas operaciones sólo se puede usar este registro y no otro.
BX o base: Se utiliza en algunos modos de direccionamiento para formar la dirección de memoria de la que
obtiene o en laque almacena los datos una determinada instrucción. Se usa para indicar el desplazamiento (offset) para referenciar direcciones de memoria con direccionamiento indirecto.
CX o contador: Se utiliza con las instrucciones de repetición y de bucle, almacenando el número de veces que
se repetirá una determinada instrucción o fragmento de un programa. En instrucciones de desplazamiento y rotación se usa como contador de 8 bits.
DX o de datos: Se usa junto a AX en operaciones aritméticas de 32 bits y en las de E/S para especificar la
dirección del puerto de E/S.
REGISTROS DE SEGMENTOS (CS, DS, SS, ES)
El microprocesador8086 divide la memoria en segmentos de 64K teniendo diferentes segmentos dependiendo de
la utilidad que le quiera dar a cada uno de ellos. Los registros de segmento tendrán la dirección de memoria donde comienza cada tipo de segmento.
Registro CS (Segmento de código): Apunta siempre al segmento donde se encuentra las instrucciones del
programa que se está ejecutando. Los programas mayores de 64K requieren cambiar CS de forma periódica. Este registro no se puede modificar directamente y debe hacerse mediante las denominadas “instrucciones de transferencia de control”.
Registro DS (Segmento de datos): Apunta al segmento de memoria donde las instrucciones del segmento de
código leen o almacenan los datos que usa el programa en ejecución. Este registro puede cambiarse durante la ejecución del programa para así poder acceder a toda la memoria instalada en el sistema.
Registro SS (Segmento de pila): Contiene la dirección de comienzo del segmento de pila. La pila es un área
de memoria destinada a almacenar valores de 16 bits de forma temporal en la ejecución de un programa.
Registro ES (Segmento Extra): Es una ampliación del segmento de datos. Las áreas de 64K de cada segmento
pueden solaparse total o parcialmente siendo imposible acceder a zonas de memoria no incluidas en los segmentos
REGISTROS ESPECIALES (SP, IP, FLAGS(BANDERAS))
Estos registros son utilizados por el microprocesador para almacenar sus propios datos y raramente se
modificaran desde el programa.
Registro SP(Stack Pointer ó Puntero de pila): Nos indica el desplazamiento respecto a SS donde ponemos
el comienzo de la pila.
Registro IP (Puntero de instrucción o contador de programa): Apunta en todo momento a la dirección
de la siguiente instrucción que debe ejecutarse, es un offset respecto al valor de CS por lo que dicha instrucción estará en CS:IP, al igual que CS, el registro IP sólo puede modificarse mediante las llamadas “instrucciones de transferencia de control”.
FLAGS
DECODIFICACIÓN DE LA MEMORIA
La decodificación de memoria es una aplicación típica de los dispositivos lógicos programables. Es un identificador único para una ubicación de la memoria con las cuales el CPU u otros dispositivos pueden
almacenar, modificar, o recuperar datos de la misma.
Se expresan en hexadecimal. Cada direccionamiento apunta hacia un byte (8 bits).
TIPOS DE DIRECCIONAMIENTO
Físico: se refiere a los medios electrónicos en la computadora para acceder a las diversas posiciones de memoria. Lógico: Se refieren a la forma en que se expresan y guardan las direcciones.
MODOS DE DIRECCIONAMIENTO
Diferentes maneras de especificar un operando dentro de una instrucción en lenguaje ensamblador. Especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la
información contenida en registros y/o constantes, contenida dentro de una instrucción de la máquina o en otra parte.
MOV AX, 12A
Operandos
TIPOS DE DIRECCIONAMIENTO
Inmediato Directo a registro Directo a memoria (absoluto) Indirecto con registro Indirecto con pila Indirecto con memoria Indirecto con desplazamiento
MODOS DE DIRECCIONAMIENTO
MODOS DE DIRECCIONAMIENTO
MODOS DE DIRECCIONAMIENTO
MODOS DE DIRECCIONAMIENTO
¿CUÁL ES EL MEJOR?