Arquitectura De La Familia De Procesadores 80x86
Enviado por yuiangel • 8 de Mayo de 2013 • 2.493 Palabras (10 Páginas) • 342 Visitas
Arquitectura de la Familia de Procesadores 80x86
8086/8088
Características:
* Tecnología HMOS. Canal N
* Empaquetado DIP 40
* Una sola fuente de voltaje. Vcc = 5 V (275 mA)
* Velocidad de 5 MHz
* 20 bits de direcciones (1 MByte)
* Lenguaje ensamblador compatible con 8080/8085
* 14 registros de 16 bits
* 24 modos de direccionamiento
* Operaciones con Bit, Byte, Word o con bloques
* Aritmética binaria o decimal, de 8 y 16 bits, con o sin signo. Incluye operaciones de multiplicación y división
* Interfaz de sistema compatible con Multibus
Diferencia 8086/8088: el tamaño de la cola (6 vs.4 bytes)
Bus externo de datos ( 16 vs. 8 bits )
Arquitectura en pipeline
Los procesadores previos al 8086, estaban limitados en su desempeño por la necesidad de realizar los dos pasos principales de ejecución del procesador: Fetch/Execute, en forma secuencial. Es decir, no se puede ejecutar una instrucción hasta que se traiga de memoria (Fetch); y no podían traerse instrucciones de memoria mientras ejecutaba una instrucción, pues el procesador estaba ocupado.
Resumiendo, un alto porcentaje del tiempo, el procesador estaba ocupado haciendo Fetch, cuando su función debiera ser ejecutar las instrucciones. La capacidad de ejecutar instrucciones sólo se ocupaba en un bajo porcentaje.
Para solucionar esto, Intel desarrolló la arquitectura en pipeline del Fetch/Execute, en la cual simplemente se divide la tarea en dos secciones: una encargada del Fetch (BIU), y otra del Execute (EU). De esta manera, existen circuitos separados para cada función, los cuales trabajan en paralelo. Si bien el proceso aún es secuencial, solamente al principio se requiere desperdiciar tiempo en el Fetch. A partir de ahí, Fetch va adelante del Execute, y trae instrucciones al procesador mientras este ejecuta las anteriores.
Bus de datos de 16 bits
Los procesadores dominantes antes de la introducción del IBM PC, basado en el 8086, eran todos de 8 bits; con lo que nos refereimos al bus de datos. Esto quiere decir que se podía accesar un byte de memoria en un solo ciclo de reloj, pues existían 8 cables entre la memoria y el procesador, por donde viajaban a la vez 8 bits de información. Que el procesador ahora sea de 16 bits, quiere decir que pueden viajar a la vez 16 bits (2 bytes) entre el procesador y la memoria; por tanto, el procesador puede mover bloques de memoria en la mitad del tiempo, y con la mitad de instrucciones. Esto hace más eficiente el acceso a memoria por parte del procesador.
Al tamaño del bus de datos también suele llamársele tamaño de palabra.
Bus de direcciones de 20 bits
También antes del 8086 había una limitante en la memoria de la que el procesador podía disponer. Los procesadores anteriores contaban con un bus de direcciones de 16 bits, con lo que podían indexar 65536 localidades distintas en memoria; siendo éstas bytes. Por tanto, su memoria máxima era de 64 Kb. Intel reconoció que pronto, esta memoria sería insuficiente, por lo que decidió ampliarla. Sin embargo, no pudieron imaginar usos para una memoria mayor a 1 Mb.; parecía infinita para los estándares de entonces. Por lo que aumentaron las líneas del bus de direcciones a 20, con lo cual se pueden indexar memorias con 1'048,576 elementos (1 Mb.)
BIU: Basic Interface Unit
El BIU es la parte del 8086 que se encarga de hacer el Fetch; es decir, su función es estar continuamente accesando la memoria, trayendo de ella las instrucciones para ser ejecutadas por el procesador.
Contiene los siguientes elementos:
1.Los registros de segmentos
2.La cola de prefetch
3.El generador de direcciones físicas
4.El Bus C
Registros de segmentos
Estos registros son localidades de 16 bits dedicados a las funciones de acceso a memoria. Se decidió, como se describirá más adelante al analizar el mecanismo de segmentación, dividir el Megabyte de memoria al que puede accesar un 8086, en 65536 partes (segmentos), iniciadas cada 1 Mb / 65536 = 16 bytes. Así, podemos en general decir que los registros de segmentos nos van a indicar qué sección de memoria seleccionamos.
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 nuestras 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 dedicamos al código. En este caso, el CPU (específicamente, el BIU), siempre toma las instrucciones de esta región de memoria; por lo que cuando requerimos más de 64 Kb. de código (instrucciones), este registro tendrá que moverse, tomando distintos valores según recorremos distintas regiones de memoria.
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 yla 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.
Cola de prefetch
Ya que el BIU trabaja en paralelo con el EU, requieren de un mecanismo para comunicarse. Esto se logra con una cola, estructura de datos que permite que el EU obtenga instrucciones para ejecutar en el mismo orden en que el BIU las colocó en la misma. Así, el EU puede solicitar instrucciones en cuanto esté listo para ejecutar la siguiente, sin importar en qué paso está el BIU en la obtención de instrucciones; y viceversa, el BIU puede continuar su búsqueda de instrucciones, depositando la que acaba de obtener en la cola, sin importar si el EU en este momento está ocupado ejecutando.
Generador de direcciones físicas
Como las direcciones son de 20 bits, y los registros que nos permiten accesarlas son de 16, se requiere de 2 registros para que en combinación formen la dirección.
Esta combinación está basada en la arquitectura
...