Make your own free website on Tripod.com

UNIDAD I:

INTRODUCCIÓN A LOS MICROPROCESADORES DE 16 BIT.


 

CONTENIDO:

-          Introducción a la asignatura.

-          Concepto Básicos en Microprocesadores.

-          Organización de la Memoria.

-          Procesamiento Paralelo y Multiprocesamiento.

 

RESEÑA HISTÓRICA:

El desarrollo de cada nuevo dispositivo electrónico trae consigo técnicas de diseño diferente, por lo general más simple. En los años setenta, para construir un reloj digital se necesitaba acoplar un buen número de circuitos lógicos como contadores, divisores, decodificadores y redes combinatorias. Al mismo tiempo el diseñador debía poseer muy buenos conocimientos sobre cada uno de los elementos. A partir de 1970, el panorama de la electrónica cambio radicalmente con la aparición del microprocesador. Vendría la época de oro del Z-80, el 8085, el 6800 y otros microprocesadores utilizados como elementos centrales en aparatos de control, y se consolidarían las técnicas de integración, en el estudio de las memorias, la programación en lenguaje de maquina y la adaptación de periféricos de todo tipo.  En el año 1978 apareció el 8086 y fue creado por la Intel, Los objetivos de la arquitectura de dicho procesador fueron los de ampliar la capacidad del INTEL 8080 de forma simétrica, añadiendo una potencia de proceso no disponible en los micros de 8 bits. Algunas de estas características son: aritmética en 16 bits, multiplicación y división con o sin signo, manipulación de cadena de caracteres y operación sobre bits. También se han realizado mecanismo de software para la construcción de códigos reentrante y reubicable. Consta de 2 unidades claramente diferenciadas denominadas EU (Unidad de Ejecución) y BIU (interfaces del Bus).

Características más destacables podemos nombrar: Arquitectura de 16 bits, Juego de instrucciones mas poderoso que su antecesores de 8 bits, Capacidad de direccionamiento de 1Mb de memoria, Capacidad de manipular hasta 64K puerto, Posibilidad de trabajar en modo paralelo/multiprocesador, Velocidad de reloj de hasta 12Mhz, Alimentación con fuente única de 5 voltios, Compatible con el juego de instrucciones del 8080, Orientado a sistema multiproceso/multitarea.

 

MICROPROCESADOR: Es un circuito integrado de VLSI (Very Large Scale Intregate) capaz de enviar y recibir señales de control, datos y enviar direcciones acorde a un programa que se encuentre en la memoria. Es posible que en una Microcomputadora pueda contener 2 ó mas Microprocesadores.

 

MICROCONTROLADOR: Es un circuito integrado programable, capaz ejecutar las órdenes o secuencias que están grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica dentro del ordenamiento del mismo y a su vez permiten obtener configuraciones diferentes. Algunas de sus partes básicas son:

-          Memoria ROM: Es la memoria de solo lectura.

-          Memoria RAM: Memoria de Acceso aleatorio.

-          Líneas de entrada y salida (I/0): También llamados puertos, se utilizan para conectar los elementos externos al microcontrolador.  

-          Lógica de Control: Coordina la interacción entre los demás bloques.

Componentes Especiales de los Microcontroladores: Dependiendo de las necesidades de los diseñadores los fabricantes han agregados componentes adicionales como: Convertidores A/D, Temporizadores o contadores, Comunicación serial RS232, Salida PWN (Modulación por ancho de pulso), interrupciones, y otras.

 

¿QUE ES LENGUAJE ASSEMBLER?  

Es un lenguaje de programación de bajo nivel en el cual se necesita un poco de conocimiento de computación. El modelo de una computadora simple es lo siguiente: 

CONTROLADORES DE E/S: Son dispositivos que proporcionan el interfaz entre los periféricos de E/S del sistema y el CPU (Teclado, Display, Mouse, Printer, etc ).Ejemplos:

Teclados (8048,8255) y el CPU

Display (6845,8275).

Printer (Norma Centronic)

Mouse (8250 Puerto Serie ,norma RS-232)

 

BUS: Es el conjunto de líneas interconexión organizadas, portadora de información y constituida por varios hilos conductores, en sentido físico o varios canales en sentido lógico de transmisión. Cuando un dato pasa de un componente a otro de ordenador lo hace a través del bus y que responden a una determinada norma (Mecánico y eléctrico). La norma puede ser de dos tipos:

Mecánica: Conector que lleva dimensión de la tarjeta y dispositivos.

Eléctrica: Que señales van conectadas, niveles de tensión, corriente, etc.

Ejemplo: Bus S-100, Bus Multibus , Bus IBM, Etc.

 

Los Buses Independientemente de la Norma pueden Dividirse en:

-          BUS DE DIRECCIONES: Este bus utiliza 20 para transmitir las direcciones de las posiciones de memoria y de los dispositivos que están conectados al bus.

-          BUS DE DATOS: El bus de datos trabaja junto con el bus de direcciones para transportar los datos a través del ordenador. Aunque el 8088 trabaja internamente a 16 bits cuando trabaja con la circuiteria que lo rodea lo hace a través de un bus de 8 bits.

-          BUS DE CONTROL: Refiere la líneas de señales de tiempo y la línea de poder a los componentes

-          BUS DE ALIMENTACIÓN.

 

CPU: Es el corazón de la computadora, la mayoría de cómputos ocurre dentro del CPU. Dentro del CPU encontramos lo siguiente:

 

El 8086 tienen cuatro tipos de registros: los registros de datos, los registros de segmentos, los registros de punteros y el registro de estado. Dispone también de un contador de programa no accesible al usuario.

 

LOS REGISTROS DE DATOS: Los cuatro registros de datos AX, BX, CX y DX, sirven de acumuladores y de registros de operandos de 16 bits. Cada uno de estos registros puede separarse en dos registros de 8 bits.  La letra X se cambia por H para el registro del byte más significativo y la L por el registro del byte menos significativo. Los cuatro registros de 16 bits del 8086 pueden comportarse como registros generales para las operaciones aritméticas y lógicas y para las transferencias, cada uno tiene una función específica a nivel de las operaciones asociadas a las instrucciones. A pesar del nombre de registro que posee, es el programador que determina el uso para cada registro del propósito general, es decir ellos permiten las operaciones básicas (leer, escribir, operaciones aritméticas, etc). Estos registros son más rápidos que la memoria porque se encuentra en el CPU directamente y no tienen que acceder al bus del sistema como requiere la memoria. Los datos accediendo en un registro normalmente no tarda tiempo. Por consiguiente son un lugar excelente para guardar datos temporales de cálculos.  

-          AX - El registro del acumulador (dividido en AH / AL): Se utiliza para las operaciones de entrada/salida, las correcciones decimales, las multiplicaciones, las divisiones y las translaciones 

-          BX - El registro de dirección base (dividido en BH / BL): Sirve de registro base para direccionar una posición de memoria con el modo de direccionamiento indirecto con el registro base.

-          CX - El registro contador (dividido en CH / CL): Sirve de contador de datos en las manipulaciones de cadenas de caracteres.

-          DX - El registro de dato (dividido en DH / DL): sirve para las multiplicaciones y divisiones asociándolo con AX, o de registro de direccionamiento indirecto para direccionar  un puerto de entrada/salida.

LOS REGISTROS PUNTEROS (POINTERS): SP, BP SI y DI. Estos cuatro registros participan en las operaciones aritméticas y lógicas. Los dos primeros se toman por defecto para expresar un desplazamiento en el interior del segmento de pila, mientras que los dos últimos se toman por defecto para expresar un desplazamiento en el interior del segmento de datos, salvo para las operaciones con cadenas de datos.

-          SI - El registro de índice de fuente.  

-          DI - El registro de índice de destino

-          BP - El indicador base

-          SP - El indicador de la pila

REGISTROS DE SEGMENTOS: Estos registros son localidades de 16 bits dedicados a las funciones de acceso a memoria. Existen 4 registros de segmentos:

-          DS: Data Segment (Segmento de Datos): Este registro selecciona una sección de 64 Kb. que se dedica generalmente a colocar en ella variables, por lo cual toma su nombre: sección de memoria dedicada a datos.

-          CS: Code Segment (Segmento de Código): Este registro selecciona el área de 64 Kb. que generalmente dedicada al código.

-          SS: Stack Segment (Segmento de Pila): Este registro selecciona la región de 64 Kb. que va a contener la pila del sistema. Como su nombre lo indica, tendremos una estructura de datos, con política LIFO (Last In, First Out = El último elemento en entrar, es el primero en salir), con instrucciones básicas PUSH y POP para su manejo. Esta estructura es usada por los programas de aplicación, pero también por el procesador para el control de instrucciones que lo requieren, tales como las llamadas a subrutinas ya atención de interrupciones.

-          ES: Extra Segment (Segmento Extra): Este registro nos permite seleccionar una sección de 64 Kb., que no está destinada a ningún uso específico; por lo que el programador puede aplicarla como comodín, generalmente como un segundo segmento de datos; o bien, para el acceso a regiones de memoria del sistema, tales como la memoria de video o las variables del BIOS.

Aunque es posible guardar cualquier dato en esto registro, esto nunca es buena idea. Los registros del segmento tienen un propósito muy especial, apuntando a los bloques accesibles de memoria. El trabajo de registros de segmento junto con el registro del propósito general es acceder algún valor de memoria. Por ejemplo si nos gustara acceder la memoria a la dirección física 12345h, nosotros debemos poner el DS = 1230h y SI = 0045h.

CPU hace un cálculo de dirección física multiplicando el registro del segmento por 10h y agregando el registro del propósito general a él (1230h * 10h + 45h = 12345h), es decir:

La dirección formada con 2 registros se llama una dirección eficaz. Por defecto BX, SI y DI registra el trabajo con DS. BP y SP trabajan con SS. Los otros registros del propósito generales no pueden formar una dirección eficaz, aunque BX puede formar una dirección eficaz, BH y BL no pueden.   

REGISTROS DEL PROPÓSITO ESPECIALES

-          IP - El Contador de Programa: Este registro, designado por IP (Instructin Pointer), contiene el desplazamiento de la posición de memoria direccionada en el interior del segmento concerniente. Este desplazamiento se suma a la dirección de base del segmento para obtener la dirección física, haciendo el cálculo la unidad de gestión de memoria integrada en el 8086.  Este desplazamiento se expresa en 16 bits. Todo programa que no efectúe ninguna carga ni manipulación de los registros de segmento es reubicable dinámicamente. Tal programa acepta las interrupciones y puede ser trasladado en el espacio de memoria, modificando los valores de los registros de segmento. Esta modificación de los valores la realiza el sistema operativo o el programador en caso de que no exista el primero.

-          Registro de Bandera - Determina el estado actual del procesador.    

IP siempre trabaja junto con CS y apunta la instrucción que actualmente se ejecuta. El Registro de las banderas se modifica automáticamente por CPU después de los funcionamientos matemáticos, esto permite determinar el tipo del resultado, y para determinar las condiciones para transferir el mando a otras partes del programa. Generalmente usted no puede acceder estos registros directamente.

 

UNIDAD ARITMÉTICA LÓGICA O REGISTRO DE ESTADO: Este registro de 16 bits, de los que solamente se utilizan nueve, reúne todos los indicadores de estado.

 

 

·         SF (Sign Flag) Indicador de signo. Esta bandera se pone a 1 el resultado es negativo. 

 

A parte de estos cinco indicadores, el registro de estado contiene también:

 

·         TF (Trace Flag) controla el modo 'Trace'. Si el programador coloca este bit a '1', se desencadenará una interrupción interna, llamada 'TRAP?, al final de cada instrucción. El programa se bifurca entonces hacia el suprograma 'Trace', lo que permite la visualización del contenido de los registros, asegurando así un funcionamiento paso a paso. 

 

MEMORIA: Colección de celdas individuales donde cada una de ellas tiene asociado un numero denominado DIRECCIÓN que es el medio mediante el cual el CPU accede a los datos que están en las celdas. Función: Almacenar fija o temporalmente datos y/o programas en un sistema de computo. La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica. La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, asi como algunos datos a emplear. Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando.

MECANISMOS DE ASIGNACION: Un mecanismo de asignación determina la cantidad de bloques (particiones) que serán administrados en la memoria.

Existen 3 mecanismos de Asignación:

1. ASIGNACIÓN DE UNA PARTICIÓN. En la memoria se considera la existencia de una sola partición, esto es, se tiene la capacidad de ejecutar un proceso. La partición es toda la memoria, cuya administración corre por cuenta del usuario, o sea, no hay un sistema operativo.

2. ASIGNACIÓN DE DOS PARTICIONES.  La memoria se divide en 2 bloques. En una partición se carga el Sistema Operativo y en la otra el programa del usuario. Es el concepto de Sistema Operativo Monousuario.

3. ASIGNACIÓN DE MULTIPLES PARTICIONES.  La memoria es dividida en varias particiones una para el Sistema Operativo y las demás para los procesos de usuarios u otras funciones especiales del Sistema Operativo. Este es el concepto teórico de asignación de memoria en los Sistemas Operativos de Multiparticiones y de Multitarea.

ESTRATEGIAS DE ASIGNACIÓN.

Una estrategia de asignación de memoria determina el lugar donde será cargado un nuevo proceso en base a un criterio. Las estrategias de asignación son:

1. PRIMER AJUSTE. El Sistema Operativo asigna el primer bloque de memoria libre con espacio suficiente para satisfacer la información. La búsqueda de este bloque es de manera secuencial.

2. MEJOR AJUSTE. El sistema operativo busca el bloque de memoria que represente el menor desperdicio según el requerimiento.

3. PEOR AJUSTE. El sistema operativo asigna el bloque mas grande que encuentre.
MÉTODOS DE ASIGNACIÓN DE MEMORIA.

Un método de asignación de memoria es la manera mediante la cual el Sistema Operativo lleva el control de la memoria tratando de que sea lo más eficiente posible.
 Los métodos de asignación más comunes son:

SEGMENTACIÓN: Este método consiste en la asignación de bloques de memoria de tamaño variable, llamados segmentos. El tamaño de cada segmento será el requerido según la petición, por ejemplo el tamaño del proceso a cargar. El tamaño máximo para un segmento estará determinado por la capacidad de direccionamiento del hardware de la computadora, esto es, de cuantos bits se dispone para almacenar una dirección. El acceso a cada elemento individual (byte) en la memoria se hace mediante una dirección de memoria que se integra por dos elementos: una dirección de segmento y una de desplazamiento. La combinación (suma) de la dirección de segmento y la de desplazamiento generan la dirección de memoria absoluta a accesar.


 

VALIDACION DEL DIRECCIONAMIENTO (Segmentación)

Dado que en cada proceso se manejan direcciones lógicas, el sistema operativo debe obtener una dirección lógica. El sistema operativo debe también asegurarse de que cada dirección lógica esté dentro del rango de direcciones empleado por el proceso. Para esto el sistema operativo implementa la tabla de segmentos como un arreglo de registros base limite como se muestra en la siguiente figura:

PAGINACION

La paginación consiste en considerar el espacio de direcciones lógicas de cada proceso como un conjunto de bloques de tamaño consistente llamados paginas. Cada dirección lógica manejada para un proceso estará conformada por un par de valores [pagina: desplazamiento].

La memoria física se administra implementando bloques de tamaño consistente denominados 'marcos'. Obviamente el tamaño de un 'marco' debe ser igual al tamaño de una página. Por lo general el tamaño designado para los marcos y páginas es pequeño.


OPCIONES DE IMPLEMENTACION DE LA TABLA DE PAGINAS

1. - La tabla de paginas se implementa completamente en hardware.

VENTAJA: Se obtiene una alta velocidad de acceso a memoria.

DESVENTAJA: Resulta problemática cuando la tabla de paginas debe ser grande.

2. - Implementar la tabla de paginas en la memoria principal.

VENTAJA: La tabla de páginas puede crecer según se requiera.

DESVENTAJA: La velocidad de accesar a memoria es relativamente baja, dado que cada referencia a memoria involucra 2 accesos.

DIRECCIONAMIENTO MS-DOS

MS-DOS (Segmentación)
8086 (16 Bits)

Capacidad de direccionamiento.
                                                    220=1'048,576=1MB.
 

ORGANIZACIÓN DE LA INFORMACIÓN DE LA MEMORIA EN MICROPROCESADORES DE 16 BITS

En una Microcomputadora de 16 bits los Bytes se agrupan de 2 en 2, formando palabras de 16 bits denominadas WORDS. Estos dos bytes van a tener direcciones consecutivas y la dirección de la palabra será la dirección donde comienza el primer byte de la palabra.

Existen Microprocesadores de 16 bits como el 68000 (Motorola) el 8086 (INTEL) y el Z80 (Zilog) que necesariamente tienen que realizar accesos a memoria en direcciones pares. El 8086 puede acceder a palabras tanto en direcciones pares como impares. Normalmente la memoria es dividida en bytes.

En el caso particular del 8086 cuando el mismo realiza un acceso a una palabra de 16 bit (Word) situada en una dirección impar el mismo tendrá que realizar dos accesos (dos ciclos) para realizar la lectura del dato.

1.- El Microprocesador lee la palabra completa y toma la parte más significativa de la palabra, o sea el byte más significativo y desprecia el byte menos significativo.

2.- El Microprocesador lee la segunda palabra y toma de ella el byte menos significativo y desprecia el byte más significativo.

EL ACCESO DE MEMORIA 8086

Para acceder diferentes posiciones de la memoria se puede utilizar estos cuatro registros: BX, SI, DI, BP combinando estos registros dentro de los símbolos [ ], estas combinaciones se apoyan (dirigiéndose los modos):

[BX + SI]
[BX + DI]
[BP + SI]
[BP + DI]

[SI]
[DI]
d16 (variable frecuentemente sola)
[BX]

[BX + SI] + d8
[BX + DI] + d8
[BP + SI] + d8
[BP + DI] + d8

[SI] + d8
[DI] + d8
[BP] + d8
[BX] + d8

[BX + SI] + d16
[BX + DI] + d16
[BP + SI] + d16
[BP + DI] + d16

[SI] + d16
[DI] + d16
[BP] + d16
[BX] + d16

d8   à Desplazamiento de 8 bits. 

 d16 à Desplazamiento de 16 bits.

 

El desplazamiento puede ser un valor inmediato o desplazamiento de una variable, o incluso ambos. Depende del compilador calcular un solo valor inmediato. 

 

El desplazamiento puede ser dentro o fuera de los símbolos [ ], el compilador genera el mismo código de máquina para ambas maneras.   

 

El desplazamiento es un valor asignado, para qué puede ser ambos positivo o negativo.  

 

Generalmente el compilador tiene cuidado sobre la diferencia entre el d8 y d16, y genera el código de la máquina requerido.  

 

Por ejemplo, asumamos que DS = 100, BX = 30, SI = 70. 

Modo de direccionamiento: [BX + SI] + 25  

Calculado por el procesador a esta dirección física: 100 * 16 + 30 + 70 + 25 = 1725.  

 

Por defecto el registro de segmento DS se usa para todos los modos excepto para aquéllos con registro BP, para estos se usa segmento SS.  

 

Hay una manera fácil de recordar todas esas posibles combinaciones que usan este mapa:

 

Puede formar las combinaciones todo válidas tomando sólo un artículo de cada columna o saltando la columna no tomando nada de él. Como BX y BP nunca va juntos. SI y DI también no van juntos. Aquí es un ejemplo de un modo dirigiéndose válido: [BX+5].  

 

El valor en el registro del segmento (CS, DS, SS, ES) se llama un segmento,  y el valor en el registro del propósito (BX, SI, DI, BP) se llama un desplazamiento.  Cuando DS contiene valor 1234h y SI contiene el valor 7890h también puede grabarse como 1234:7890. La dirección física será 1234h * 10h + 7890h = 19BD0h.

 

PROCESAMIENTO PARALELO

En un procesador genérico, la secuencia de operaciones de una instrucción típica puede representarse como sigue:

3.gif (2026 bytes)

 En un microprocesador de segunda generación como el 8085 de INTEL, esta secuencia, expresada en función del tiempo y para un programa que contiene la sucesión de instrucciones I1, I2, I3, se vería así:

EX

.

.

.

I1

.

.

.

I2

.

.

.

I3

OF

.

.

I1

.

.

.

I2

.

.

.

I3

.

ID

.

I1

.

.

.

I2

.

.

.

I3

.

.

IF

I1

.

.

.

I2

.

.

.

I3

.

.

.

t

1

2

3

4

5

6

7

8

9

10

11

12

Si se diseña un procesador en el cual los circuitos que realizan la búsqueda de instrucciones (IF), la descodificación de instrucciones (ID), la búsqueda de operandos (OF) y la ejecución (EX) no tienen elementos en común, es decir que pueden operar independientemente uno de otro, se obtiene un procesador paralelo de cuatro unidades.

El diagrama de tiempos, para la misma secuencia de instrucciones del caso precedente es como se muestra :

EX

.

.

.

I1

I2

I3

I4

I5

I6

I7

I8

I9

OF

.

.

I1

I2

I3

I4

I5

I6

I7

I8

I9

.

ID

.

I1

I2

I3

I4

I5

I6

I7

I8

I9

.

.

IF

I1

I2

I3

I4

I5

I6

I7

I8

I9

.

.

.

t

1

2

3

4

5

6

7

8

9

10

11

12

 Esta técnica se denomina también "pipelining" porque asocia las cuatro fases de la ejecución de instrucciones a cuatro "caños" por donde fluyen las fases de cada instrucción.

cañería de ejecución

cañería de búsqueda de operandos

cañería de descodificación de instrucción

cañería de búsqueda de instrucción

 SISTEMA MULTI-TAREA: Es un sistema que da la sensación de ejecutar varias tareas (programas) al mismo tiempo. Requiere una implementación de hardware: sistema de interrupciones y una de software: sistema operativo multitarea. Las tareas se ejecutan basándose en un sistema de prioridades, donde la tarea más prioritaria se ejecuta hasta que requiera un recurso no disponible o hasta que finalice. En ese momento se transfiere el control a la que sigue y así sucesivamente hasta agotar la lista. Como todos los programas requieren de algún acceso a disco, impresora, pantalla, etc. y estos periféricos son más lentos que la CPU, queda tiempo de máquina durante el cual avanza la ejecución de las tareas menos prioritarias. Algunos SO, para evitar que los usuarios con tareas de muy baja prioridad tengan la sensación de que su programa no se ejecuta, emplean un algoritmo llamado round-robin (por Robin Hood) mediante el cual periódicamente entregan el control a las tareas menos prioritarias aunque no les corresponda.

SISTEMA MULTI-USUARIO: Es un sistema en el cual los usuarios tienen la sensación de disponer la computadora para ellos, pero en realidad el SO administra los recursos y los usuarios compiten por ellos. En estos sistemas, se asignan a los usuarios privilegios para tener acceso a los recursos. El administrador del sistema es un usuario con los máximos privilegios. El tiene la función de asignar a los usuarios los recursos del sistema (cuentas, espacio en disco, tiempo de CPU, dispositivos de impresión, mensajes, nivel de seguridad, recursos de software, etc.). Para poder ser multi-usuario, el sistema debe ser multi-tarea. Además, requiere una implementación de hardware: el modo protegido y una de software: sistema operativo multi-usuario.

.

 

MULTIPROCESAMIENTO: Multi-procesamiento significa usar en un sistema dos o más procesadores coordinados entre sí. El uso de procesadores múltiples ofrece varias ventajas significativas respecto del método centralizado, que depende de una sola CPU y una memoria extremadamente rápida:

1) Las tareas del sistema pueden ser asignadas a procesadores específicos cuyos diseños están optimizados para realizar dichas tareas de manera fácil y eficiente.

2) Se pueden lograr muy altos niveles de performance cuando los procesadores pueden ejecutar simultáneamente (procesamiento distribuido/paralelo).

3) La subdivisión del sistema estimula el desarrollo en paralelo de los sub-sistemas, divide la aplicación en tareas más pequeñas y por ende más manejables, y ayuda a aislar los efectos de modificaciones en el sistema.

Existen dos tipos de procesadores: los procesadores independientes y las extensiones del procesador, también llamadas coprocesadores. Un procesador independiente ejecuta su propia secuencia de instrucciones. El 8086, el 8088 y el 8089 son ejemplos de procesadores independientes. Un segundo tipo de procesador, llamado "extensión del procesador", tal como el 8087 NPX, agrega registros, tipos de datos y nuevas instrucciones al sistema. Una extensión del procesador, en efecto, extiende el conjunto de instrucciones (y la arquitectura) de su procesador principal. En los sistemas de multi-procesamiento existen dos problemas de coordinación clásicos: arbitraje del bus y exclusión mutua. El arbitraje del bus puede ser realizado por la lógica de pedido/concesión del bus contenida en cada uno de los procesadores (arbitraje de bus local), por árbitros de bus (arbitraje del bus del sistema) o por una combinación de ambos cuando los procesadores comparten múltiples buses. A medida que cada CPU requiere asincrónicamente el acceso al bus compartido, la lógica de arbitraje resuelve prioridades y concede acceso al bus, la CPU completa su transferencia y luego cede el bus o espera ser forzada a ceder el bus. En todos los casos, el arbitraje opera invisible al software. Para la exclusión mutua, cada procesador tiene una señal de bloqueo para el bus (bus LOCK), que puede ser activada por un programa para prevenir que otros procesadores obtengan acceso al bus compartido. Cada procesador tiene una instrucción que puede examinar un byte de memoria mientras el bus está bloqueado, permitiendo de esta manera implementar un mecanismo de señalización (semáforo) para controlar el acceso a los recursos compartidos (tablas, buffers, etc.). Para soportar la interfaz de múltiple maestro para la familia 8086/88, INTEL incluyó el árbitro de bus 8289. El 8289 es compatible con el bus local del 8086 y en conjunto con el controlador de bus 8288 implementa el arbitraje del bus con el protocolo MULTIBUS.

 

REFERENCIAS BIBLIOGRAFICAS:

Ing. Antonio Román. Introducción al Microprocesador 8086/8088. [Trabajo de Ascenso para categoría asistente] (16 Bit). (págs 1-65)

Moisés Burgos (2004). Organizacion Interna del Microntrolador 8086. [Documento en linea]. Disponible en: http://members.tripod.com/~MoisesRBB/m_8086.html. [Consultado 08 Octubre 2005].