Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Procesadores Compendio
Procesadores Compendio
Un computador esta compuesto principalmente por procesador, chips de memoria, varios chips
inteligentes o programables, el bus de datos, el bus de direcciones, el bus de control y
Unidades de entrada/salida.
El procesador:
Es el chip que ejecuta las instrucciones. El procesador o CPU, lleva a cabo una gran
variedad de clculos, comparaciones numricas y transferencias de datos como
respuesta a las peticiones de los programas que estn siendo ejecutados en memoria.
La CPU controla las operaciones bsicas del ordenador enviando y recibiendo seales
de control, direcciones de memoria y datos de un lugar a otro del ordenador a travs de
un BUS.
A lo largo de este bus estn las puertas de entrada y salida (E/S), las cuales conectan a
la memoria y a los chips de apoyo al bus. Los datos pasan a travs de estas puertas de
E/S mientras viajan desde y hasta la CPU y otras partes del ordenador.
Por Ejemplo el procesador 8086 es un procesador de 16 bits y esto significa que el
procesador va a manipular en una sla operacin datos de hasta 16 bits. Es decir,
cuando transfiera datos a la memoria o los traiga desde ella, lo podr hacer de 16 bits
en 16 bits.
El procesador cuenta con una serie de registros usados para realizarlas operaciones de
clculo, y como almacenamiento de datos.
Un registro del procesador es una zona de memoria dentro del procesador donde se
puede almacenar informacin, de forma que el acceso a esta informacin es
instantneo, ya que no hay que utilizar el bus de datos que conecta el procesador con la
memoria para obtener dichos datos.
Registros Apuntadores: BP y SP
Se utilizan para acceder a memoria cuando se establece el modo de
direccionamiento mediante punteros.
BP y SP indican el puntero base y el puntero de la pila respectivamente.
La Memoria:
Los chips de memoria se dedican a almacenar la informacin hasta que se necesita.
El nmero y la capacidad de almacenamiento de estos chips que hay dentro del
ordenador determinan la cantidad de memoria que podremos utilizar para los
programas y los datos.
Normalmente la memoria siempre se ha dividido en dos tipos principales, como son la
RAM y la ROM.
Chips inteligentes:
Se trata de chips de apoyo, de los que se sirve el procesador o el usuario. Estos chips
existen debido a que el procesador no puede controlar todo el ordenador sin ayuda. Al
delegar ciertas funciones de control a otros chips, le queda ms tiempo libre para
atender a su propio trabajo.
Estos chips de apoyo pueden ser responsables de procesos tales como el flujo de
informacin a travs de la circuitera interna(como el controlador de interrupciones y el
controlador DMA) y controlar el flujo de informacin de uno a otro dispositivo(como un
monitor o una unidad de disco) conectado al ordenador.
Bus de direcciones:
El bus de direcciones del Pc utiliza lneas de seal para transmitir las direcciones de
memoria y de los dispositivos conectados al bus.
A travs de cada una de esas lneas pueden viajar dos posibles valores(0 1, es decir
tenson alta o tensin baja), por ejemplo el ordenador 8086 tiene un bus de direcciones
de 20 lneas y puede especificar 2^20. Es decir puede direccionar 1 Megabyte.
Modelos superiores como el 80386 o el pentium direccionan muchsimo ms, tanto como
les permite su bus: 32 bits en el caso del 386 y 64 bits en el caso del pentium. Es decir,
2^32 y 2^64 direcciones respectivamente.
Bus de datos:
El bus de datos trabaja con el bus de direcciones para transportar los datos a travs del
ordenador.
Bus de control:
Transporta seales para sincronizar las operaciones del procesador y su comunicacin
con la memoria y los dispositivos de E/S.
Arquitectura en pipeline
Los procesadores previos al 8086, estaban limitados en su desempeo por la necesidad de
realizar los dos pasos principales de ejecucin del procesador: Fetch/Execute, en forma
secuencial. Es decir, no se puede ejecutar una instruccin hasta que se traiga de memoria
(Fetch); y no podan traerse instrucciones de memoria mientras ejecutaba una instruccin, pues
el procesador estaba ocupado.
Resumiendo, un alto porcentaje del tiempo, el procesador estaba ocupado haciendo Fetch,
cuando su funcin debiera ser ejecutar las instrucciones. La capacidad de ejecutar
instrucciones slo 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 funcin, los cuales
trabajan en paralelo. Si bien el proceso an 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.
2. 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 obtencin de instrucciones; y viceversa, el BIU
puede continuar su bsqueda de instrucciones, depositando la que acaba de obtener en la
cola, sin importar si el EU en este momento est ocupado ejecutando.
3. Generador de direcciones fsicas
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 combinacin formen la direccin.
Esta combinacin est basada en la arquitectura segmentada que veremos ms adelante.
La funcin del generador de direcciones fsicas consiste en realizar esa combinacin, para
lo cual contiene la circuitera necesaria para calcular la frmula: Direccin Fsica =
Segmento * 0010h + Desplazamiento
4. Bus C
Este bus interno del procesador permite que la informacin fluya entre la interfaz con la
memoria y los distintos elementos del BIU. Se requiere un bus independiente, para que la
informacin que usa el EU no se interfiera con la que est procesando el BIU.
1. Unidad de Control
Es la seccin del procesador que contiene la lgica de funcionamiento del mismo; es decir,
esta circuitera gobierna el comportamiento de los distintos elementos en el procesador,
coordinando los procesos de Fetch y Execute, as como las distintas microoperaciones
necesarias para la ejecucin. Por tanto, tiene dos funciones principales:
Generar la secuencia de estados del procesador, lo que logra gracias a la ejecucin del
microcdigo.
Decodificar las instrucciones, determinando as los pasos para su ejcucin
Es el parmetro que selecciona los distintos servicios del Sistema Operativo, usados
mediante el mecanismo de Interrupciones.
BX: Registro de Base
Este registro, adems de las caractersticas generales de los registros de propsito
general, se especializa en el acceso a memoria en combinacin con los registros de
ndice, especialmente para el manejo de arreglos.
CX: Registro de Contador
Este registro, como su nombre indica, ser ampliamente usado como contador. Puede
ser usado como cualquier registro de propsito general, pero tiene capacidades
especiales para ser usado en instrucciones: de manejo de ciclos como contador en los
corrimientos de manejo de memoria y strings
DX: Registro de Datos
Este registro de propsito general tiene como especializaciones:
Formar con AX nmeros de 32 bits, siendo en este caso la parte ms significativa.
3. Registros de ndice
Estos registros, de 16 bits, son muy similares a los de propsito general, pero no tienen
todas las capacidades de los mismos; en particular:
No pueden conectarse directamente con los registros de segmentos.
No pueden verse como dos registros de 8 bits (parte alta y parte baja).
Ahora bien, tienen sus propias habilidades. Especficamente, estn diseados para
combinarse con los registros de segmento, ser usados como desplazamientos y as
intervenir en el acceso a memoria. Se les usa, por ello, para el acceso a arreglos o como
apuntadores.
Los 4 registros que se consideran en este grupo son:
SI: Source Index, o Apuntador a la Fuente
Este registro se especializa en el acceso a bytes o words dentro del segmento de datos;
existen instrucciones que lo toman por defecto como el registro que apunta a una
localidad de memoria que se va a leer, por lo cual toma su nombre.
DI: Destination Index, Apuntador al Destino
Este registro se especializa en el acceso a bytes o words dentro del segmento de datos
o el extra; existen instrucciones que lo toman por defecto como el registro que en
combinacin con el ES apunta a una localidad de memoria que se va a escribir, por lo
cual toma su nombre.
BP: Base Pointer, o apuntador a la Base de la Pila.
Este registro es usado para accesar, dentro del segmento de pila, la informacin.
Principalmente nos permite determinar cuando hay un underflow, es decir, cuando se
quiere sacar ms informacin de la pila que la que se ha colocado en ella; y el acceso a
variables locales y parmetros.
SP: Stack Pointer, o apuntador al tope de la Pila.
Este registro tambin est siempre asociado al manejo de la pila. Su funcin especial es
marcar el tope de la pila, y por tanto, indica en qu localidad de memoria se localiza la
informacin de la pila; se incrementa cuando se hace un POP, con lo que apunta al
siguiente elemento en la pila; y se decrementa al hacer un PUSH, con lo que controla el
acceso a la memoria de la pila.
5. Registro de Banderas
Este es un registro de 16 bits, usados como banderas. Esto quiere decir que cada uno de
los bits seala un evento dentro del procesador; cuando el bit tiene un valor de 0, el evento
no ocurri (falso); y cuando tiene un valor de 1, el evento ocurri (verdadero). Entre las
banderas ms importantes mencionaremos:
6. Bus A
Este bus es el camino por el que viajan los datos dentro de la unidad de ejecucin,
principalmente entre los registros y el ALU.
cdigo fuente a cdigo de mquina) y no puede cambiarse durante la ejecucin del programa
(a menos que el programa se escriba sobre s mismo, lo que constituye una prctica no
aconsejada).
Todo esto genera los 24 modos de direccionamiento (considerando desplazamientos de 8 o 16
bits)a memoria que se ven a continuacin:
- Registro indirecto: [BX], [DI]. [SI].
- Basado: Desplazamiento [BX], Desplazamiento [BP].
- Indexado: Desplazamiento [SI], Desaplazamiento[DI].
- Basado-indexado: [BX+SI], [BX+DI], [BP+SI], [BX+DI].
- Basado-indexado con desplazamiento: Desplazamiento[BX+SI], Desplazamiento[BX+DI],
Desplazamiento [BP+SI], Desplazamiento [BX+DI]
- Directo: [Desplazamiento].
Aqu desp8 indica desplazamiento de 8 bits y desp16 indica desplazamiento de 16 bits. Otras
combinaciones no estn implementadas en la CPU y generarn error al querer ensamblar, por
ejemplo, ADD CL,[DX+SI].
El ensamblador genera el tipo de desplazamiento ms apropiado (0, 8 16 bits) dependiendo
del valor que tenga la constante: si vale cero se utiliza el primer caso, si vale entre -128 y 127
se utiliza el segundo, y en otro caso se utiliza el tercero. Ntese que [BP] sin desplazamiento
no existe. Al ensamblar una instruccin como, por ejemplo, MOV AL,[BP], se generar un
desplazamiento de 8 bits con valor cero. Esta instruccin ocupa tres bytes, mientras que MOV
AL,[SI] ocupa dos, porque no necesita el desplazamiento.
Estos modos de direccionamiento producen algunos inconvenientes en el 8086/8088. La CPU
gasta tiempo calculando una direccin compuesta de varias cantidades. Principalmente esto se
debe al hecho de que el clculo de direcciones est programado en microcdigo (dentro de la
CROM del sistema de control de la unidad de ejecucin). En las siguientes versiones (a partir
del 80186/80188) estos clculos estn cableados en la mquina y, por lo tanto, cuesta mucho
menos tiempo el realizarlos.
Veamos un ejemplo: MOV AL, ES:[BX+SI+6]. En este caso el operando de la izquierda tiene
direccionamiento a registro mientras que el de la derecha indica una posicin de memoria.
Poniendo valores numricos, supongamos que los valores actuales de los registros sean: ES =
3200h, BX = 200h, SI = 38h. Como se apunt ms arriba la direccin real de memoria ser:
ES * 10h + BX + SI + 6 = 3200h * 10h + 200h + 38h + 6 = 3223Eh
almacena en uno de los cuatro registros de segmento (CS, DS, ES, SS). El procesador usa
estas dos cantidades de 16 bits para calcular la direccin real de 20 bits, segn la siguiente
frmula:
Direccin real = 16 * (direccin del segmento) + offset
Tal como veamos antes, dado que 16 en decimal es 10 en hexadecimal, multiplicar por ese
valor es lo mismo que correr el nmero hexadecimal a la izquierda una posicin.
Hay dos registros de segmento que tienen usos especiales: el microprocesador utiliza el
registro CS (con el offset almacenado en el puntero de instruccin IP) cada vez que se debe
acceder a un byte de instruccin de programa, mientras que las instrucciones que utilizan la
pila (llamados a procedimientos, retornos, interrupciones y las instrucciones PUSH y POP)
siempre utilizan el registro de segmento SS (con el offset almacenado en el registro puntero de
pila SP). De ah los nombres que toman: CS es el segmento de cdigo mientras que SS es el
registro segmento de pila.
Para acceder a datos en la memoria se puede utilizar cualquiera de los cuatro registros de
segmento, pero uno de ellos provoca que la instruccin ocupe un byte menos de memoria: es
el llamado segmento por defecto, por lo que en lo posible hay que tratar de usar dicho
segmento para direccionar datos. Este segmento es el DS (registro de segmento de datos)
para todos los casos excepto cuando se utiliza el registro base BP. En este caso el segmento
por defecto es SS.
Si se utiliza otro registro, el ensamblador genera un byte de prefijo correspondiente al
segmento antes de la instruccin: CS -> 2Eh, DS -> 3Eh, ES -> 26h y SS -> 36h. El uso de
estos diferentes segmentos significa que hay reas de trabajo separadas para el programa, pila
y los datos. Cada rea tiene un tamao mximo de 64 KBytes. Dado que hay cuatro registros
de segmento, uno de programa (CS), uno de pila (SS) y dos de datos (segmento de datos DS y
segmento extra ES) el rea de trabajo puede llegar a 4 * 64 KB = 256 KB en un momento dado
suponiendo que las reas no se superponen.
Si el programa y los datos ocupan menos de 64 KB, lo que se hace es fijar los registros de
segmento al principio del programa y luego se utilizan diferentes offsets para acceder a
distintas posiciones de memoria. En caso contrario necesariamente debern cambiarse los
registros de segmento en la parte del programa que lo requiera. Los registros de segmento DS,
ES y SS se cargan mediante las instrucciones MOV y POP, mientras que CS se carga
mediante transferencias de control (saltos, llamadas, retornos, interrupciones) intersegmento.