Arquitectura de computadoras II El 8086
Arquitectura del 8086/8088
Arquitectura de computadoras II El 8086
Primera Calculadora
Ábaco:
La calculadora primitiva
hecha con cuentas o esferas
ahuecadas alrededor del año
500 a.c de Jc.
- Problema: no es
programable
Historia de la Computación
Leonardo DaVinci
(1452-1519)
• Primer diseñador de un
aparato para hacer
cálculos aritméticos.
Pascal
• Pascalina, primera
calculadora digital, 1647
Arquitectura de computadoras II El 8086
Historia de la Computación
• Charles Babbage
(1792-1871)
– Máquina diferencial
– Máquina analítica
– Componentes:
• unidad de entrada
• procesador (calculadora)
• unidad de control.
• almacenaje
• unidad de salida
Arquitectura de computadoras II El 8086
Historia de la Computación
• Hermann Hollerith
(1860-1929)
– Máquina tabuladora
(1890) censo E.E.U.U.
– Máquina de contabilidad
electromecánica (1920-
50)
– Fundador de IBM
Arquitectura de computadoras II El 8086
Tarjeta Perforada Hollerith
Arquitectura de computadoras II El 8086
Historia de la Computación
• Alan Turing
(1912-1954)
– Máquina de Turing (1936)
cerebro artificial (teoría)
– Colossus (1943)
• Primer Ordenador digital
totalmente electrónico,
utilizado para descrifrar.
Arquitectura de computadoras II El 8086
COLOSSUS
Arquitectura de computadoras II El 8086
Historia de la Computación
• John Von Newman
– EDVAC
– Aplicación de
memoria principal
– Modelo de Von
Newman
Historia de la Computación
Primera generación
• Años 50-58
• Tubos al vacío o bulbos
• Programación en lenguaje
de máquina
• Tarjetas perforadas
• Memoria: 1000 palabras
• Alto precio
• UNIVAC 1, IBM 650
• Ocupan mucho espacio
Historia de la
Computación
Segunda generación
• Transistores
Historia de la Computación
Segunda generación
• Años 59-64
• Uso de transistores
• Multiusuario
• Lenguajes de alto nivel
• Memoria virtual
• Menor tamaño, menor costo
• Compatibilidad Limitada
• Burroughs, CDC, RCA, IBM.
Historia de la Computación
Tercera generación
Integrados
• Circuitos
Historia de la Computación
Tercera generación
• Segunda mitad de los años 60
• Usan circuitos integrados
(Chip)
• Sistema operativo: manejo de
la memoria y el procesador
• IBM 360, 370
• UNIVAC, CDC, Honeywell,
Fujitsu
Historia de la Computación
Cuarta generación
• Microprocesador
Arquitectura de computadoras II El 8086
Primer Micro
CPU de 4bits, fue el primer microprocesador en un
simple chip, el primero disponible comercialmente
En : 1971
F: 740 KHZ
Conjunto de instrucciones:45
(Aplicaciones limitadas)
Socket:16 pin DIP
Arquitectura de computadoras II El 8086
Segundo Micro de INTEL
8008
CPU de 8 bits
La versión ampliada de 4004 pero con
8bits : (direccionamiento hasta 16KB)
El i8008 emplea direcciones de 14 bits
( 16 KB )
En : 1972
Velocidad de CPU: 0.5 MHz ~ 0.8 MHz
Socket:18 pin DIP
El hecho de que el i8008 procesara 8 bits de datos al tiempo y de que pudiera
acceder a mucha más memoria hacen que el i8008 sea en la práctica unas
tres o cuatro veces más rápido que sus predecesores de 4 bits.
Arquitectura de computadoras II El 8086
Micro de INTEL 8080
CPU de 8 bits moderno
La versión ampliada de 8008 pero
8008A direcciona de 16 bits ( 64
KB )
En : 1974
Velocidad de CPU: 2 MHz
Socket: 40pin DIP
Con un empaquetado más grande de 40 pines, se permitió al 8080 proporcionar un
bus de dirección de 16 bits y un bus de datos de 8 bits, permitiendo el fácil acceso a
64 KB de memoria y ejecutaba 10 veces mas rápido que 8008. Tenía siete registros
de 8 bits
En este momento otras empresas como Zilog (Z80), Fairchiald y Motorola(MC6800)
lanzaron su procesador de 8 bits
Arquitectura de computadoras II El 8086
Procesador INTEL 8085
CPU de 8 bits moderno
Era binariamente compatible con el
anterior Intel 8080 pero exigía menos
soporte de hardware
En : 1977
Velocidad de CPU: 3.07 Mhz a 5 Mhz
Socket: 40pin DIP
El bus de direcciones tiene un tamaño de 8 bits. Para dar una dirección de 16 bits,
usa los 8bits del bus de datos y los 8 bits del bus de direcciones, ahorrando
terminales multiplexando en el tiempo el bus de datos y el de direcciones. Esto
implica que se pueden direccionar 64k posiciones de memoria.
El número 5 de la numeración del procesador proviene del hecho que solamente
requería una alimentación de 5 voltios, no como el 8080 que necesitaba unas
alimentaciones de 5 y 12 voltios.
Se redujo el costo.
Arquitectura de computadoras II El 8086
Procesadores de 16 bits
INTEL 8086/8088
CPU de 16 bits moderno
Los Intel 8086 e Intel 8088 (i8086, Los i8086 e i8088 presentan cuatro
llamado oficialmente iAPX 86, e i8088) registros de segmento (CS, DS, ES y
son dos microprocesadores de 16 bits SS), que se pueden establecer a partir
diseñados por Intel en 1978, de los registros índice. Debido a que
La diferencia entre el i8086 y el i8088 estos procesadores pueden direccionar
es que este último utiliza un bus externo hasta 1 MB de memoria, para lo que
de 8 bits, para poder emplear circuitos son necesarios 20 bits, ya que sus
de soporte al microprocesador más registros son de 16 bits, es necesario
económicos, en contraposición al bus emplear registros de segmento para
de 16 bits del i8086.. acceder a toda la memoria. En lugar de
suministrar los bits faltantes, como la
Velocidad de CPU: 4.77 Mhz mayoría de los procesadores
Pins: 40pins segmentados
Arquitectura de computadoras II El 8086
Procesadores de 16 bits
INTEL 80286
CPU de 16 bits. El Intel 80286 (llamado
oficialmente iAPX 286, también
conocido como i286 o 286) es un
microprocesador de 16 bits de la familia
x86, que fue lanzado en el 1982. Tras las versiones iniciales a 6 y 8 MHz,
Cuenta con 134.000 transistores. Las Intel lanzó un modelo a 12,5 MHz. En
versiones iniciales del i286 funcionaban promedio, el 80286 tenía una velocidad
a 6 y 8 MHz, pero acabó alcanzando de unas 0,21 instrucciones por ciclo de
una velocidad de hasta 25 MHz. Fue el [Link] modelo de 6 MHz operaba a 0,9
microprocesador elegido para equipar MIPS, el de 10 MHz a 1,5 MIPS, y el de
al IBM Personal Computer/AT, lo que 12 MHz a 2,66 MIPS
causó que fuera el más empleado en Al tener un bus de direcciones de 24 bits,
los compatibles PC (más propiamente es capaz de direccionar hasta 16 MB de
compatibles AT) entre mediados y memoria RAM, mientras que el 8086 sólo
finales de los años 80 . puede 1 MB.
Arquitectura de computadoras II El 8086
Procesadores de 32 bits
INTEL 80386
CPU de 32 bits, el sucesor del i286 fue el Intel 80386DX,
de 32 bits. Fabricado y diseñado por Intel, el procesador
i386 fue lanzado al mercado el 16 de octubre de 1985
80386SX:tienen una arquitectura de 32 bits, pero se comunican con el exterior
mediante un bus externo de 16 bits (una situación parecida a la del Intel 8086 y el
Intel 8088 en los primeros PC) y tiene un bus de direcciones de 24 bits, por lo que
solo puede direccionar 16 MB.(Data bus 16, Address bus 24 , MAXIMA MEMORIA
DIRECCIONABLE 16MB con bus interno de 32 bits)
386SL: Para portátil
Una versión embebida del 80386SX ha sido fabricada como el 80376. Fue
sustituida por el 80386EX, que ha sido utilizado en aplicaciones espaciales
como el Telescopio espacial Hubble.
16 Mhz a 40 Mhz , 1985
80386Dx CPU: Bus de 32 bits en Address y Data
Hasta 4GB direccionamiento
Arquitectura de computadoras II El 8086
Procesadores de 32 bits
INTEL 80486
Los Intel 80486 (i486, 486) son una familia de
microprocesadores de 32 bits con arquitectura x86 diseñados
por Intel Corporation. Los i486 son muy similares a sus
predecesores, los Intel 80386. La diferencias principales son
que los i486 tienen un conjunto de instrucciones optimizado, y
un caché unificado integrados en el propio circuito integrado
del microprocesador y una unidad de interfaz de bus
mejorada. Estas mejoras hacen que los i486 sean el doble de
rápidos que un i386 a la misma frecuencia de reloj.
25 Mhz a 100 Mhz , 1989
80386Dx CPU: Bus de 32 bits en Address y Data
Hasta 4GB direccionamiento
Arquitectura de computadoras II El 8086
INTEL 80486
Intel 80486-DX - la versión modelo, con las características indicadas anteriormente.
Intel 80486-SX - un i486DX con la unidad de coma flotante deshabilitada, para reducir
su costo.
Intel 80486-DX2 - un i486DX que internamente funciona al doble de la velocidad
suministrada por el reloj externo, a la que funcionan el resto de dispositivos del sistema.
Intel 80486-SX2 - un i486SX que funciona internamente al doble de la velocidad del
reloj.
Intel 80486-SL - un i486DX con una unidad de ahorro de energía.
Intel 80486-SL-NM - un i486SX con una unidad de ahorro de energía.
Intel 80486DX4 - como un i486DX2 pero triplicando la velocidad interna.
Intel 80487 o 80487-SX - una versión del i486DX diseñado para ser usado como unidad
de coma flotante del i486SX. El i487 se instala en el zócalo de coprocesador que se
encuentra al efecto en las placas base para i486SX. el cual era un 486DX completo que
inhabilitaba el 486SX
Intel 80486 OverDrive (486SX, 486SX2, 486DX2 o 486DX4) - variaciones de los
modelos anteriores diseñados como procesadores de actualización, que tienen un
voltaje diferente. Normalmente estaban diseñados para ser empleados en placas base
que no soportaban el microprocesador equivalente de forma directa.
Arquitectura del 8086/8088
Arquitectura de computadoras II El 8086
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.
Arquitectura de computadoras II El 8086
Arquitectura en pipeline
• Para solucionar ésto, 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.
Arquitectura de computadoras II El 8086
Arquitectura del 8086/8088
Estos microprocesadores
tiene 2 procesadores
conectados internamente,
estos procesadores son:
EU
Unidad de ejecución
(Execution Unit).
BIU
Unidad de interfaz
con el Bus (Bus
Interface Unit).
Arquitectura de computadoras II El 8086
La unidad de ejecución (EU)
• La unidad de ejecución (EU) se encarga de realizar las
operaciones aritméticas y lógicas, además de proporcionar
las direcciones lógicas al BIU --una dirección lógica está
formada de dos direcciones, la primera indica el segmento
en el cual se está trabajando y la otra indica el offset, o
desplazamiento, de este segmento; esto es
segment:offset --.
• La EU tiene una unidad aritmética lógica (ALU) de 16 bits,
un registro de banderas y un conjunto de registros de
propósito general. El registro de banderas contiene 6
banderas de estado (que la EU manipula para indicar el
estado del resultado de una operación lógica o aritmética) y
3 banderas de control que se pueden manipular por los
programas para alterar las operaciones del procesador .
Arquitectura de computadoras II El 8086
La Unidad de Interfase con el Bus
(BIU)
• Es la responsables de la comunicación externa del
procesador. Esta unidad de proceso se encarga de
traducir las direcciones lógicas a direcciones físicas de
la memoria con ayuda de los registros de segmento
DS, SS, ES, CS e IP.
• Para convertir una dirección lógica en una dirección
física el BIU corre el valor del registro de segmento 4
posiciones a la izquierda (que es equivalente a
multiplicar por 16h) y suma el valor del offset para
obtener un valor de 20 bits necesarios, como se
muestra en la figura.
Arquitectura de computadoras II El 8086
MODELO DE PROGRAMACIÓN
DEL 8086.
Arquitectura de computadoras II El 8086
El modelo de programación del
8086
Arquitectura de computadoras II El 8086
Registros de datos o de propósito
general
AX, BX, CX, DX: pueden utilizarse bien como registros de 16
bits o como dos registros separados de 8 bits (byte superior e
inferior) cambiando la X por H o L según queramos referirnos a la
parte alta o baja respectivamente. Por ejemplo,
AX se descompone en AH (parte alta) y AL (parte baja).
Evidentemente, ¡cualquier cambio sobre AH o AL altera AX
AX = Acumulador.
Es el registro principal, es utilizado en las instrucciones de
multiplicación y división y en algunas instrucciones aritméticas
especializadas, así como en ciertas operaciones de carácter
específico como entrada, salida y traducción. Obsérvese que el
8086 es suficientemente potente para realizar las operaciones
lógicas, la suma y la resta sobre cualquier registro de datos, no
necesariamente el acumulador.
Arquitectura de computadoras II El 8086
Registros de propósito general
BX = Base.
Se usa como registro base para referenciar direcciones de
memoria con direccionamiento indirecto, manteniendo la dirección
de la base o comienzo de tablas o matrices. De esta manera, no es
preciso indicar una posición de memoria fija, sino la número BX (así,
haciendo avanzar de unidad en unidad a BX, por ejemplo, se puede
ir accediendo a un gran bloque de memoria en un bucle).
CX = Contador.
Se utiliza comúnmente como contador en bucles y operaciones
repetitivas de manejo de cadenas. En las instrucciones de
desplazamiento y rotación se utiliza como contador de 8 bits.
DX = Datos.
Usado en conjunción con AX en las operaciones de
multiplicación y división que involucran o generan datos de 32 bits.
En las de entrada y salida se emplea para especificar la dirección del
puerto E/S.
Arquitectura de computadoras II El 8086
Registros de segmento:
Definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del
8086. Estas áreas pueden traslaparse total o parcialmente. No es posible
acceder a una posición de memoria no definida por algún segmento: si es
preciso, habrá de moverse alguno.
CS = Registro de segmento de código (code segment).
Contiene la dirección del segmento con las instrucciones del
programa. Los programas de más de 64 Kb requieren cambiar CS
periódicamente.
DS = Registro de segmento de datos (data segment ).
Segmento del área de datos del programa.
SS = Registro de segmento de pila (stack segment).
Segmento de pila.
ES = Registro de segmento extra (extra segment).
Segmento de ampliación para zona de datos. Es extraordinariamente
útil actuando en conjunción con DS: con ambos se puede definir dos zonas
de 64 Kb, tan alejadas como se desee en el espacio de direcciones, entre
las que se pueden intercambiar datos
Arquitectura de computadoras II El 8086
Registros punteros de pila
SP = Puntero de pila (stack pointer).
Apunta al inicio de la pila. Utilizado en las
instrucciones de manejo de la pila.
BP = Puntero base (base pointer).
Es un puntero de base, que apunta a una zona dentro de la
pila dedicada al almacenamiento de datos (variables locales y
parámetros de las funciones en los programas compilados).
Arquitectura de computadoras II El 8086
Puntero de instrucciones o
contador de programa
IP = Puntero de instrucción (instruction
pointer).
Marca el desplazamiento de la instrucción en curso dentro del
segmento de código. Es automáticamente modificado con la lectura de una
instrucción.
Arquitectura de computadoras II El 8086
Registros índices:
SI = Índice fuente (source index).
Utilizado como registro de índice en ciertos modos de
direccionamiento indirecto, también se emplea para
guardar un valor de desplazamiento en operaciones de
cadenas.
DI = Índice destino (destination index).
Se usa en determinados modos de direccionamiento
indirecto y para almacenar un desplazamiento en
operaciones con cadenas.
Arquitectura de computadoras II El 8086
Registro de estado o de indicadores
(flags)
• Es un registro de 16 bits de los cuales 9 son utilizados
para indicar diversas situaciones durante la ejecución de un
programa.
• Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condición, que
reflejan los resultados de operaciones del programa
• los bits del 8 al 10 son indicadores de control y el resto no
se utilizan.
• Estos indicadores pueden ser comprobados por las
instrucciones de salto condicional, lo que permite variar el
flujo secuencial del programa según el resultado de las
operaciones.
Arquitectura de computadoras II El 8086
Bit Indicador de: Uso
Indicador de arrastre del bit de mayor orden,
que puede ocurrir en las operaciones
CF Acarreo ("Carry Flag") aritméticas suma y resta.
Si está activo Indica un número par de bits
activos (bits cuyo contenido es 1). Esta
PF Paridad ("Parity Flag") información es útil cuando el procesador
controla transmisiones de datos.
Acarreo auxiliar Indicador de ajuste en operaciones
AF aritméticas con cantidades BCD
Cero ("Zero Flag") Está activo si el resultado de operación es
ZF cero o resultado de comparación igual.
Signo ("Sign Flag") Si está activo indica que el resultado de
SF operación o de comparación son negativos.
Si está activo, el procesador genera
automáticamente una interrupción después
TF Detención ("Trap Flag") de la ejecución de cada instrucción, lo que
permite controlar paso a paso la ejecución del
programa. Este bit debe estar normalmente
inactivo (a 0).
Este bit controla el estado del sistema de
IF Interrupción ("Interrupt Flag") interrupciones enmascarables . Cuando está
activo (1) permite las interrupciones; el estado
inactivo (0) las deshabilita.
Dirección ("Direction Flag") Indica la dirección de las operaciones.
DF
Desbordamiento (Overflow Flag") Señala desbordamiento aritmético
OF
Arquitectura de computadoras II El 8086
Bit Indicador de: Indicativo si bit 1 Indicativo si bit 0
CF Acarreo CY ("Carry yes") NC ("No Carry")
PF Paridad PE ("Parity Even") paridad par PO ("Parity Odd") paridad impar
AF Acarreo auxiliar AC ("Auxiliar Carry") NA ("No Auxiliar")
ZF Cero ZR ("Zero") NZ ("No Zero")
SF Signo NG ("Negative") negativo PL ("Plus") positivo
IF Interrupción EI ("Enabled Interrupt") activa DI ("Disabled Interrupt") desactivada
DF Dirección DN ("Down") decremento UP incremento
O Desbordamiento OV ("Overflow") NV ("No overflow")
F
Arquitectura de computadoras II El 8086
Segmentación de la Memoria en el
8086
Arquitectura de computadoras II El 8086
SEGMENTACIÓN
FFFFF
Dirección lógica
Dirección
física
SEGMENTO Registro de segmento
Desplaz
amiento
Dirección de segmento
CPU
Memoria
Arquitectura de computadoras II El 8086
Segmento de Memoria
FFFFF
• Un segmento es un área
continua de memoria que puede
tener hasta 64K-bytes, que debe
comenzar en una localidad de
SEGMENTO
memoria cuya dirección sea
límite de 16 bytes (cantidad
denominada párrafo) y que
puede traslaparse con otros
segmentos.
Memoria
Arquitectura de computadoras II El 8086
Segmentos de Memoria
El segmento de código (tiene como base el
contenido del registro CS).
En este segmento se encuentran las
instrucciones que forman el programa.
Para acceder a los datos contenidos en él,
se usa el registro IP como desplazamiento.
El segmento de datos (que tiene como
base el registro DS).
Contiene los datos que utiliza el programa
(variables, etc.) Para acceder a los datos
contenidos en él, se suele utilizar los
registros SI y DI como desplazamiento.
Arquitectura de computadoras II El 8086
Segmentos de Memoria
- El segmento de pila (con SS como base).
- En él se desarrolla la pila del programa, utilizada para
almacén temporal de datos, llamadas a funciones, etc.
Debe estar presente en todos los programas EXE de
forma obligada. Se utiliza el registro SP para acceder a
los datos de este segmento.
- El segmento extra (con ES como base).
- Su uso es opcional, y en él se encuentra un segmento
definido por el usuario y que, regularmente, contiene
datos adicionales. Al igual que ocurre con el segmento
de datos, para acceder a los datos contenidos en él, se
suelen utilizar los registros SI y DI.
Arquitectura de computadoras II El 8086
SEGMENTACIÓN
TRASLAPE DE SEGMENTOS
CS CS
SEGMENTO DE PROGRAMA
CÓDIGO SEGMENTO DE
CÓDIGO
DS
SEGMENTO DE
DATOS
OTRO SEGMENTO
ES
SEGMENTO EXTRA
DE DATOS
SS
STACK
MEMORIA
MEMORIA
Arquitectura de computadoras II El 8086
SEGMENTACIÓN
Relocalización de un programa usando el registro CS
02000
600
PROGRAMA SEGMENTO DE
CÓDIGO EN CURSO
1A300 nuevo (CS)=1A30
600
PROGRAMA SEGMENTO DE
CÓDIGO
RELOCALIZADO
MEMORIA
Arquitectura de computadoras II El 8086
Dirección Física y Dirección Lógica
Cada localidad de memoria tiene dos tipos de direcciones :
Dirección Física y Dirección Lógica o efectiva
Una dirección Física es el valor único de 20 bits que identifica la
localización de cada byte en el espacio de memoria de 1 Mbyte.
Los programas tratan con dirección Lógicas mas que con la dirección
Física.
Para cualquier localidad de memoria, el valor base del segmento
ubica el primer byte del contenido del segmento y el valor del offset
es la distancia, en bytes , de la localización destino del principio del
segmento.
Los valores de la base del Segmento y del offset son cantidades no
signadas de 16 bits; la dirección del byte más bajo del segmento
tiene un offset 0.
Arquitectura de computadoras II El 8086
Formación de una Dirección Física
Siempre que una memoria es accesada , se genera una
dirección física a partir de la dirección lógica.
Dirección
efectiva,
lógica u
offset + 4 bits EL REGISTRO DE
SEGMENTO SE
Dirección de DESPLAZA 4 BITS
0000
0000
segmento HACIA LA
IZQUIERDA
(MULTIPLICACIÓN
x16)
Dirección física
20 BITS
Carlos Canto Q.
Arquitectura de computadoras II El 8086
Formación de una Dirección Física
Arquitectura de computadoras II El 8086
Formación de una Dirección Física
Por Ejemplo:
Si la dirección base del segmento es
2915h, entonces las direcciones en
este segmento inician en 2915:0000
y van hasta 2915:FFFF