Sie sind auf Seite 1von 12

Intel 8086: fue el primer microprocesador, descendiente directo del

8080 (un procesador de Intel para uso general desarrollado en 1974, de 8


bits, que contenía 4.500 transistores y podía ejecutar 200.000 instrucciones
por segundo), que contaba con registros de 16 bits, un bus de datos de 16
bits y direccionamiento de 20 bits, lo que le permitía controlar más de un
megabyte de memoria.

Pero el Intel 8086 tenía dos inconvenientes. De una parte, los


circuitos periféricos que precisaba para trabajar de manera efectiva con 16
bits. Por otro lado, su precio, que era muy elevado, lo que hacía su
comercialización bastante difícil. De todas maneras este procesador sentó
las bases del futuro desarrollo de los procesadores.

Registros: Los registros del i8086 e i8088 se basaron en el diseño del Intel
8080 y el Intel 8085, y de hecho son compatibles a nivel de ensamblador
con el i8080. El conjunto de registros también es similar al del i8080, pero
ampliados a 16 bits. Tanto el i8086 como el i8088 tienen cuatro registros
generales de 16 bits, que también pueden ser accedidos como ocho
registros de 8 bits, y tienen cuatro registros índice de 16 bits (incluyendo el
puntero de pila). Los registros de datos se usan a veces de forma implícita
por las instrucciones, haciendo más difícil la organización de los registros
para emplearlos con valores temporales.

Registros de propósito general: Los registros de propósito general AX,


BX, CX, EX y DX son los caballos de fuerza del sistema. Son únicos en el
sentido de que se les puede direccionar como una palabra o como un byte.

Registros Índices: Los registros SI y DI disponibles para direccionamiento


indexado y para sumas y restas.
Registros Apuntadores: Los registros SP (apuntador de pila) y BP
(apuntador base) están asociados con el registro SS y permiten al sistema
acceder a datos en el segmento de la pila.

Registro SP: El apuntador de pila de 16 bits está asociado con el registro


SS y proporciona un valor de desplazamiento que se refiere a la palabra
actual que está siendo procesada en la pila. El sistema maneja de manera
automática este registro.

Registro BP: El apuntador base de 16 bits facilita la referencia de


parámetros, los cuales son datos y direcciones transmitidos vía la pila.

Registros Banderas: Es un registro de 16 bits, de los cuales nueve sirven


para indicar el estado actual de la máquina y el resultado del
procesamiento. Muchas instrucciones aritméticas y de comparación
cambian el estado de las banderas y apoyándose de ellas determinan la
acción subsecuente. Veamos como se reparten y que bits son los que sirven
para indicar el estado actual de la máquina tal y como hemos comentado
anteriormente. Se debe tener en cuenta que esta tabla contiene 16
posiciones (de 0 a 15), que son los 16 bits del registro de banderas y que
por convenio los bits de un registro se ordenan de derecha a izquierda, es
decir, la posición 0 la encontraremos a la derecha y la posición 15 a la
izquierda.

Registros de Segmento: Definen áreas de 64 Kb dentro del espacio de


direcciones de 1 Mb del 8086. Estas áreas pueden solaparse 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.
Registro Apuntador de Instrucciones: El registro IP de 16 bits contiene
el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El
IP está asociado con el registro CS en el sentido de que el IP indica la
instrucción actual dentro del segmento de código que se está ejecutando
actualmente en la memoria.

Direccionamiento:

La líneas del bus de direcciones se ven en rojo, las del bus de datos en azul
y las del bus de control en verde. Las líneas del bus de energía se ven en
negro. Estos procesadores multiplexan en tiempo el bus de direcciones, con
el bus de datos y control. En el 8086 se ven los pines del 2 al 16 y los pines
35 al 39 con doble funcionalidad, en un momento determinado transporta la
dirección y en otro momento entran o salen los datos (o sale información de
algunas líneas del bus de control).

Estos procesadores tienen 27 modos de direccionamiento (una


cantidad bastante más grande que los microprocesadores anteriores) o
reglas para localizar un operando de una instrucción. Tres de ellos son
comunes a microprocesadores anteriores: direccionamiento inmediato
(el operando es un número que se encuentra en la misma instrucción),
direccionamiento a registro (el operando es un registro del
microprocesador) y direccionamiento inherente (el operando está
implícito en la instrucción, por ejemplo, en la multiplicación uno de los
operandos siempre es el acumulador). El resto de los modos sirve para
localizar un operando en memoria. Para facilitar la explicación de estos
modos, se pueden resumir de la siguiente manera:

Deben sumarse cuatro cantidades: 1) dirección de segmento, 2)


dirección base, 3) una cantidad índice y 4) un desplazamiento.

La dirección de segmento se almacena en el registro de segmento


(DS, ES, SS o CS). En la próxima sección se indica la forma en que se hace
esto. Por ahora basta con saber que el contenido del registro de segmento
se multiplica por 16 antes de utilizarse para obtener la dirección real. El
registro de segmentación siempre se usa para referenciar a memoria.

La base se almacena en el registro base (BX o BP). El índice se


almacena en el registro índice (SI o DI). Cualquiera de estas dos cantidades,
la suma de las dos o ninguna, pueden utilizarse para calcular la dirección
real, pero no pueden sumarse dos bases o dos índices. Los registros
restantes (AX, CX, DX y SP) no pueden utilizarse para direccionamiento
indirecto. El programador puede utilizar tanto la base como el índice para
gestionar ciertas cosas, tales como matrices de dos dimensiones, o
estructuras internas a otras estructuras, esquemas que se utilizan en las
prácticas comunes de programación. La base y el índice son variables o
dinámicas, ya que están almacenadas en registros de la CPU. Es decir,
pueden modificarse fácilmente mientras se ejecuta un programa.

Además del segmento, base e índice, se usa un desplazamiento de 16


bits, 8 bits o 0 bits (sin desplazamiento). Ésta es una cantidad estática que
se fija al tiempo de ensamblado (paso de código fuente a código de
máquina) y no puede cambiarse durante la ejecución del programa (a
menos que el programa se escriba sobre sí mismo, lo que constituye una
práctica no aconsejada).

Todo esto genera los 24 modos de direccionamiento a memoria que


se ven a continuación:

-Registro indirecto: 1) [BX], 2) [DI]. 3) [SI].


-Basado: 4) desp8[BX], 5) desp8[BP], 6) desp16[BX], 7)
desp16[BP].
-Indexado: 8) desp8[SI], 9) desp8[DI], 10) desp16[SI], 11)
desp16[DI].
-Basado-indexado: 12) [BX+SI], 13) [BX+DI], 14) [BP+SI], 15)
[BX+DI].
-Basado-indexado con desplazamiento: 16) desp8[BX+SI], 17)
desp8[BX+DI], 18) desp8[BP+SI], 19) desp8[BX+DI], 20)
desp16[BX+SI], 21) desp16[BX+DI], 22) desp16[BP+SI], 23)
desp16[BX+DI].
- Directo: 24) [desp16].
Aquí desp8 indica desplazamiento de 8 bits y desp16 indica
desplazamiento de 16 bits. Otras combinaciones no están implementadas
en la CPU y generarán error al querer ensamblar, por ejemplo, ADD CL,
[DX+SI].

El ensamblador genera el tipo de desplazamiento más 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. Nótese que [BP] sin desplazamiento no existe.
Al ensamblar una instrucción como, por ejemplo, MOV AL,[BP], se generará
un desplazamiento de 8 bits con valor cero. Esta instrucción 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 dirección compuesta
de varias cantidades. Principalmente esto se debe al hecho de que el
cálculo de direcciones está programado en microcódigo (dentro de la CROM
del sistema de control de la unidad de ejecución). En las siguientes
versiones (a partir del 80186/80188) estos cálculos están cableados en la
máquina y, por lo tanto, cuesta mucho menos tiempo el realizarlos.

Sparc: es una arquitectura RISC big-endian. Es decir, una arquitectura con


un conjunto reducido de instrucciones. Fue originalmente diseñada por Sun
Microsystems y dirigido por el ingeniero Kaa en 1985, se basa en los diseños
RISC I y II de la Universidad de California en Berkeley que fueron definidos
entre los años 1980 y 1982.

La empresa Sun Microsystems diseñó esta arquitectura y la licenció a


otros fabricantes como Texas Instruments, Cypress Semiconductor, Fujitsu,
LSI Logic entre otros. SPARC es la primera arquitectura RISC abierta y como
tal, las especificaciones de diseño están publicadas, así otros fabricantes de
microprocesadores pueden desarrollar su propio diseño. Una de las ideas
innovadoras de esta arquitectura es la ventana de registros que permite
hacer fácilmente compiladores de alto rendimiento y una significativa
reducción de memoria en las instrucciones load/store en relación con otras
arquitecturas RISC. Las ventajas se aprecian sobre todo en programas
grandes.

Registros: Un rasgo único caracteriza al diseño SPARC, es la ventana con


solape de registros. El procesador posee mucho más que 32 registros
enteros, pero presenta a cada instante 32. Una analogía puede ser creada
comparando la ventana de registros con una rueda rotativa. Alguna parte de
la rueda siempre está en contacto con el suelo; así al girarla tomamos
diferentes porciones de la rueda, (el efecto es similar para el overlap de la
ventana de registros). El resultado de un registro se cambia a operando
para la próxima operación, obviando la necesidad de una instrucción Load y
Store extras.

Se acordó para la especificación de la arquitectura, poder tener 32


registros "visibles" divididos en grupos de 8.

De r0 a r7 , Registros GLOBALES.
De r7 a r15, Registros SALIDA.

De r15 a r23, Registros LOCALES.

De r24 a r31, Registros ENTRADA.

Los registros globales son "vistos" por todas las ventanas, los locales
son solo accesibles por la ventana actual y los registros de salida se solapan
con los registros de entrada de la ventana siguiente (los registros de salida
para una ventana deben ponerse como registros de entrada para la
próxima, y deben estar en el mismo registro).

El puntero de ventana mantiene la pista de cual ventana es la


actualmente activa. Existen instrucciones para "abrir" y "cerrar" ventanas,
por ejemplo para una instrucción "call", la ventana de registros gira en
sentido anti horario; para el retorno desde una instrucción "call", esta gira
en sentido horario.

Una interrupción utiliza una ventana fresca, es decir, abre una


ventana nueva. La cantidad de ventanas es un parámetro de la
implementación, generalmente 7 u 8.

La alternativa más elaborada para circundar lentamente la ventana


de registros es colocar los registros durante el tiempo de compilación. Para
lenguajes como C, Pascal, etc., esta estrategia es difícil y consume mucho
tiempo. Por lo tanto, el compilador es crucial para mejorar la productividad
del programa.

Direccionamiento: Su característica distintiva es utilizar ventanas de


registros, 32 registros de "enteros" de 32 bits, 16 registros de punto flotante
de 64 bits (para el caso de doble precisión) que se pueden utilizar como 32
registros de 32 bits (para precisión simple).

Modos de direccionamiento:

Inmediato, (constantes de 13 bits).

Directo, (offset de 13 bits).

Indirecto, (registro + offset de 13 bits o registro + registro).

Utiliza instrucciones retardadas (saltos, load y store ).

Manejo de memoria:

Espacio virtual de 4 Gigabytes.

Unidad de manejo de memoria (MMU) que trabaja con páginas de tamaño


configurable.

AMD64: El primer procesador con soporte para este conjunto de


instrucciones fue el Opteron, lanzado en abril de 2003. Posteriormente ha
sido implementado en múltiples variantes del Athlon 64 y del Pentium 4 de
Intel, en éste último caso bajo una versión de Intel llamada Intel 64 (antes
EM64T). Es una arquitectura basada en la extensión del conjunto de
instrucciones x86 para manejar direcciones de 64 bits. Además de una
simple extensión contempla mejoras adicionales como duplicar el número y
el tamaño de los registros de uso general y de instrucciones SSE.

El conjunto de instrucciones del AMD x86-64 (renombrado


posteriormente como AMD64) es una extensión directa de la arquitectura
del x86 a una arquitectura de 64 bits, motivado por el hecho de que los 4GB
de memoria que son direccionables directamente por una CPU de 32 bits ya
no es suficiente para todas las aplicaciones. Algunos de los cambios:

Nuevos registros. El número de registros de propósito general se ha


incrementado de 8 en los procesadores x86-32 a 16, y el tamaño de todos
estos registros se ha incrementado de 32 bits a 64 bits. Adicionalmente, el
número de registros MMX de 128 bits (usados para las instrucciones
extendidas SIMD) se ha incrementado de 8 a 16. Los registros adicionales
incrementan el rendimiento.

Registros XMM (SSE) adicionales: Igualmente el número de registros de


128 bits (usados para las instrucciones SSE) han aumentado de 8 a 16.

Espacio de direcciones mayor. Debido a la arquitectura de 64 bits, la


arquitectura AMD64 puede direccionar hasta 16 exabytes de memoria. Esto,
comparado con los 4GB del x86-32, de los que sólo la mitad está disponible
para aplicaciones en la mayoría de las versiones de Microsoft Windows, el
sistema operativo dominante en entornos domésticos. Las
implementaciones futuras de la arquitectura del AMD64 puede proporcionar
hasta 2 exabytes de memoria disponible. Si la paginación de memoria se
utiliza correctamente, los sistemas operativos de 32 bits podrían tener
acceso a algunas de las extensiones de dirección físicas sin tener que
realizar la ejecución en modo largo (long). Aunque la memoria virtual de
todos los programas en el modo de 32 bits está limitada a 4 GB.

Instrucción de acceso a datos relativa al puntero: Las instrucciones


ahora pueden hacer referencias relativas al puntero de instrucciones
(registro RIP). Esto permite crear código independiente de la posición que
permite un código mucho más eficiente en bibliotecas dinámicas y código
cargado en tiempo de ejecución.

Llamadas al sistema más rápidas. Debido a que la segmentación no


está soportada en el modo de 64 bits, las llamadas al sistema no tienen las
latencias asociadas con almacenar y recuperar la información de
segmentación ni tienen que realizar las comprobaciones necesarias de
protección a nivel de segmentación. Por lo tanto, AMD ha introducido un
nuevo interfaz de llamadas al sistema, al que se accede utilizando
solamente la instrucción "SYSCALL". Aunque los sistemas operativos todavía
pueden utilizar el sistema de interrupciones para las llamadas al sistema, en
el modo de 64 bits utilizar "SYSCALL" es más rápido.

Instrucciones SSE. La arquitectura AMD 64 incluye las extensiones de


Intel SSE y SSE2, las últimas cpus incluyen SSE3 también. También están
soportadas las instrucciones del x86 y MMX.

Bit NX. El bit NX es una característica del procesador que permite al


sistema operativo prohibir la ejecución del código en área de datos,
mejorando la seguridad. Esta características está disponible en los modos
de 32 y 64 bits, y está soportada por Linux, Solaris, Windows XP SP2,
Windows Server 2003 SP1.

CISC y RISC
Los procesadores se agrupan hoy en dos familias, la más antigua y
común de las cuales es la "CISC" o "Complex InstructionSet Computer":
computador de set complejo de instrucciones. Esto corresponde a
procesadores que son capaces de ejecutarun gran número de instrucciones
pre-definidas en lenguaje de máquina (del orden del centenar). Desde hace
unos años se fabrican y utilizan en algunas máquinas procesadores "RISC" o
"Reduced Instruction Set Computer",es decir con un número reducido de
instrucciones. Esto permite una ejecución más rápida de las instrucciones
pero requierecompiladores (o sea traductores automáticos de programas)
más complejos ya que las instrucciones que un "CISC" podríaadmitir pero no
un "RISC", deben ser escritas como combinaciones de varias instruciones
admisibles del "RISC". Se obtieneuna ganancia en velocidad por el hecho
que el RISC domina instrucciones muy frecuentes mientras son operaciones
menosfrecuentes las que deben descomponerse.

Dentro de muy poco los usuarios dejaran de hacerse la pregunta


¿ RISC O CISC ?, puesto que la tendencia futura, nos lleva a pensar que ya
no existiran los CISC puros.

Hace ya tiempo que se ha empezado a investigar sobre


microprocesadores "hibridos", es decir, han llevado a cabo el que las nuevas
CPU's no sean en su cien por cien CISC, sino por el contrario, que estas ya
contengan algunos aspectos de tecnologia RISC. Este proposito se ha
realizado con el fin de obtener ventajas procedentes de ambas tecnologias
(mantener la compatibilidad x86 de los CISC, y a la vez aumentar las
prestaciones hasta aproximarse a un RISC), sin embargo, este objetivo
todavia no se ha conseguido, de momento se han introducido algunos
puntos del RISC, lo cual no significa que hayan alcanzado un nivel optimo.

Realmente, las diferencias son cada vez mas borrosas entre las
arquitecturas CISC y RISC. Las CPU's combinan elementos de ambas y no
son faciles de encasillar. Por ejemplo, el Pentium Pro traduce las largas
instrucciones CISC de la arquitectura x86 a microoperaciones sencillas de
longitud fija que se ejecutan en un nucleo de estilo RISC. El UltraSparc-II de
Sun, acelera la decodificacion MPEG con unas instrucciones especiales para
graficos; estas instrucciones obtienen unos resultados que en otros
procesadores requeririan 48 instrucciones.

Por lo tanto a corto plazo, en el mercado coexistiran las CPU's RISC y


los microprocesadores hibridos RISC - CISC, pero cada vez con diferencias
mas difusas entre ambas tecnologias. De hecho, los futuros procesadores
lucharan en cuatro frentes :

-Ejecutar mas instrucciones por ciclo.

-Ejecutar las instrucciones en orden distinto del original para que las
interdependencias entre operaciones sucesivas no afecten al rendimiento
del procesador.
-Renombrar los registros para paliar la escasez de los mismos.

-Contribuir a acelerar el rendimiento global del sistema, ademas de la


velocidad de la CPU.

Republica Bolivariana de Venezuela

Ministerio del Poder Popular para la Educacion Superior

Universidad Rafael Urdaneta

Maracaibo. Edo-Zulia
Arquitectura del Computador

Profesor:

Claudio Bustos

Alumnos:

Chourio Jonathan

Ferrer Andrea

Salgado Edgar

Maracaibo, diciembre de 2009-12-02

Introducción

En el presente Trabajo se estará tratando acerca de 3 tipos de


microprocesadores que se han desarrollado por diferentes fabricantes en el
transcurrir de estos años, tomando en cuenta sus características
principales, analizando sus registros, ubicando sus formatos de
instrucciones y también sus tipos de direccionamientos. Entendiendo que
los microprocesadores son circuitos integrado que contienen algunos o
todos los elementos hardware, y el de CPU, que es un concepto lógico. Una
CPU puede estar soportada por uno o varios microprocesadores, y un
microprocesador puede soportar una o varias CPU. Un núcleo suele referirse
a una porción del procesador que realiza todas las actividades de una CPU
real.

Conclusión

Finalizado el presente trabajo se puede decir que además de la


diferencia que existe en bytes entre estos microprocesadores, el
rendimiento de estos también varia ya que aplican ciclos de relojes
diferentes necesarios para hacer ciertas aplicaciones y calcular una
dirección de memoria mas efectiva

Das könnte Ihnen auch gefallen