Académique Documents
Professionnel Documents
Culture Documents
Grupo: 4N1 – Eo
Investigador
alan1306@gmail.com
________________________________________________________________________________
ABSTRACTO
El microprocesador 80x86 es aquel que utiliza un bus de datos de 16 bits para poder
emplear circuitos de soporte al microprocesador que sean más económicos, estos cuentan
con un tamaño de palabra e instrucciones de 32 bits. Con el pasar de los años y la creciente
necesidad de velocidad y mejoras en el desempeño llevaron a la creación de la arquitectura
80x64 la cual consta con un tamaño de palabra e instrucciones de 64 bits.
The microprocessor 80x86, employ a data bus of 16 bits to be able to use circuits of support
to the microprocessor the fact that they be more economic, these count on a size verbally
and instructions of 32 bits. With the exceeding the years and the increasing need of velocity
and improvements in the performance carried to the creation of architecture 80x64 the as he
counts on a size verbally and instructions of 64 bits.
INTRODUCCION
La familia x86 utiliza la arquitectura de Von Newman la cual consta de unidad de CPU,
Dispositivos de Memoria, dispositivos de I/O. En este diseño se buscaba la comunicación
reciproca entre todos los bloques que lo integran, de esta manera se pueden enviar y recibir
datos tanto de la memoria como de los dispositivos de I/O.
Esta arquitectura consta de tres tipos de bus de sistema mediante los cuales se realiza la
transmisión de datos. Estos son el bus de datos, el bus de direcciones mediante el cual se
transfiere información desde una ubicación de memoria, un dispositivo de I/O y el CPU, el
bus de control el cual esta encargado como bien lo dice su nombre de controlar la
comunicación del procesador con el resto del sistema. Este posee dos canales READ y
WRITE que especifica la dirección del flujo de datos.
Con la necesidad de mejorar algunos de los parámetros para así satisfacer las necesidades
que con el pasar de los años fueron apareciendo se creo x64, esta arquitectura fue
implantada en microprocesadores para supercomputadoras en los años 1960 y en
servidores y estaciones de trabajo basados en RISC (computadora de conjunto reducido de
instrucciones) desde 1990, lo cual nos hace notar que esto se ha venido desarrollando
desde hace varios años atrás.
DESARROLLO
Arquitectura x86
La familia x86 está diseñada siguiendo el modelo de arquitectura de Von Newman la cual
consta de unidad de CPU, Memorias, dispositivos de I/O como se muestra a continuación:
Estos se dedican a almacenar posiciones de memoria debido a que el acceso a los registros
es mucho más rápido que los accesos de memoria, también son utilizados para controlar
instrucciones en ejecución, manejar los direccionamientos en memoria y proporcionar
capacidad aritmética. En total hay 14 de estos registros cada uno de los cuales está
pensado principalmente para alguna función concreta.
CX (Registro Contador): Puede contener un valor para controlar el número de veces que un
ciclo se repite o un valor para corrimiento de bits.
DX (Registro Dato): Se usa como registro auxiliar en operaciones aritméticas con cifras
grandes y como contenedor de datos a la hora de usar instrucciones de comunicación de
puertos.
Estos cuatro registros, como los restantes, son de 16 bits, pero para permitir la realización
de operaciones de tipo byte cada uno de estos cuatro registros esta dividido en dos
subregistros de 8 bits a los que se puede acceder de forma independiente. Así, por ejemplo
AX esta dividido en AL que son los 8 bits inferiores y AH que son los 8 bits superiores. En
consecuencia los demás registros de propósito general se dividen de la misma manera.
De esta forma se tiene que todas las instrucciones ensamblador pueden operar con datos
de 8 y 16 bits dependiendo de lo que se precise. Cabe aclarar que esta división no es
posible en los demás registros.
Registros de Segmento: Son cuatro registros de 16 bits los cuales definen áreas de
64Kbits dentro del espacio de direcciones de memoria. 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.
CS (Code Segment): Este registro es usado por el procesador, junto con el registro IP, para
conocer la ubicación de la instrucción que esta siendo ejecutada.
DS (Data Segment): Se usa para indicar dónde están todos los datos del programa que se
esta ejecutando.
La pila es un área de memoria muy importante la cual cuenta con dos registros de 16 bits
cada uno que se usan como desplazamiento para apuntar su contenido. Estos son utilizados
como complemento al registro SS.
BP (Base Pointer): Se usa como registro auxiliar y facilita la referencia de parámetros, los
cuales son datos y direcciones transmitidos a través de la pila.
Registros Indice
Registro de Instrucción
Solo hay uno, el registro IP (Instruction Pointer), el cual es utilizado por la CPU para conocer
la posición relativa a la base CS donde se encuentra la instrucción que se esta ejecutando
en ese momento.
Este puntero cambia automáticamente cada vez que se ejecuta una instrucción o se realiza
un salto a otro punto del programa a causa de una instrucción de salto.
Registro Bandera
Este es un registro de 16 bits, de los cuales 9 sirven para indicar el estado actual de la
maquina 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:
Bit 0 – CF (Carry Flag): Contiene el acarreo de los bits de mayor orden después de una
operación aritmética, también almacena el contenido del último bit en una operación de
corrimiento o de rotación.
Bit 1: No utilizado.
Bit 3: No utilizado.
Bit 4 – AF (Auxiliar Flag): Contiene un acarreo auxiliar del bit 3 en un dato de 8 bits, para
aritmética especializada. Se pone en 1 cuando existe la necesidad de realizar ajustes tras
una operación de tipo BCD.
Bit 5: No utilizado.
Bit 7 – SF (Sign Flag): Contiene el signo resultante de una operación aritmética (0=positivo,
1=negativo).
Bit8 – TF (Trap Flag): Permite la operación del procesador en modo de depuración (paso a
paso).
Bit 10 – DF (Direction Flag): Indica a la CPU hacia donde se desplazan los punteros
relativos en operaciones repetitivas de cadenas de datos. (1=Decremento automático,
0=aumento).
Bit 11 – OF (Overflow Flag): indica desbordamiento del bit de mayor orden después de una
operación aritmética de números signados. (1=existe overflow, 0=no existe overflow)
La ALU
Memoria en x86
Todos los ordenadores necesitan memoria para almacenar programas e información, asi
como para cargar y ejecutar los programas. Por lo general, entre mas compleja es la tarea
que se desea realizar, más memoria necesita el ordenador.
Direccionamiento de memoria
Dado que en x86 se tiene una longitud de palabra de direcciones de 20 bits es posible
direccionar hasta 1MB de información. Sin embargo la CPU sólo procesa palabras de 16 bits
en sus registros de direcciones y las direcciones de memoria son de 20 bits, por lo que una
dirección no cabe en un registro.
Para solucionar este inconveniente, se ideo el dividir la dirección de un byte en dos partes,
denominadas segmento y desplazamiento, ambos de 16 bits. De esta forma, se pueden
direccionar 1MB y se tiene acceso a toda la memoria del PC.
Al mantener el valor del segmento fijo (lo que ocurre en los programas) y variar únicamente
el valor del desplazamiento solo es posible acceder a almacenar únicamente 64KB, que es
el valor máximo alcanzable con los 16 bits de del registro de desplazamiento. A esta
cantidad de desplazamiento se le denomina segmento de memoria.
El hecho de que haya más de un registro de segmento hace posible crear programas que
controlen varios bloques de memoria simultáneos de hasta 64 KB cada uno.
Arquitectura x64
Con el pasar del tiempo y las continuas reducciones en el coste de la memoria, al inicio de
los años 1990, comenzaron a aparecer instalaciones con cantidades de RAM próximas a los
4GB, y comenzó a ser deseable el uso de espacios de memoria virtual que superaban el
límite de 4 GB para manejar ciertos tipos de problemas. Como respuesta a esta necesidad
varias empresas empezaron a lanzar nuevas familias con chip de 64bits, los cuales
inicialmente se utilizaron en supercomputadoras, estaciones de trabajo de grandes
prestaciones y servidores.
Mientras las arquitecturas de 64 bits incontestablemente hacen más sencillo el trabajar con
grandes conjuntos de datos en aplicaciones como el video digital, computación científica y
grandes bases de datos, ha existido un debate considerable sobre si los modos de
compatibilidad con 32 bits serán más rápidos que los sistemas de 32 bits del mismo precio
para otras tareas.
Esta es una cuestión clave, ya que la asignación de memoria es uno de los métodos más
eficientes para transportar datos del disco a la memoria, cuando es correctamente
implementado por el sistema operativo
La principal desventaja de las arquitecturas de 64 bits es que, con respecto a las de 32 bits,
los mismos datos ocupan ligeramente más espacio en memoria debido al crecimiento de los
punteros y posiblemente otros tipos y al relleno para alineamiento (dependiendo del tipo de
programa, algunos pueden multiplicar su tamaño).
Esto incrementa los requisitos de memoria en un proceso dado y puede tener implicaciones
para el uso eficiente de la caché del procesador. Mantener un modelo parcial de 32 bits es
una manera de manejar esto y es en general razonablemente efectivo. Para esto lo que se
hace es que el código de programa resida en varios espacios de direcciones de 32 bits
mientras que los objetos de datos pueden (opcionalmente) residir en regiones de 64 bits
(implementado por el sistema operativo de altas prestaciones Z/OS).
A pesar de esto, los usuarios de sistemas operativos libres o de código abierto han podido
utilizar entornos exclusivos de 64 bits durante años. No todas las aplicaciones necesitan un
gran espacio de direcciones o manipular elementos de 64 bits, así que no se beneficiarían
de los grandes espacios de direcciones o de los registros más anchos y las rutas de datos;
el principal beneficio para las aplicaciones de 64 bits que no se beneficiarían de nada de
esto seria que las versiones de x86 podrían usar mas registros.
Los sistemas de 64 bits algunas veces carecen de software equivalente escrito para
arquitecturas de 32 bits. Los problemas más graves son debido a controladores de
dispositivos incompatibles. Aunque gran parte del software puede ejecutarse en modo de
compatibilidad con 32 bits, normalmente es imposible ejecutar un controlador de dispositivo
o un programa similar, en ese modo ya que habitualmente se ejecuta entre el sistema
operativo y el hardware, donde no se puede utilizar la emulación directa.
Muchos paquetes de software de código abierto pueden simplemente ser compilados para
trabajar en un entorno de 64 bits en sistemas operativos como GNU/Linux. Todo lo que se
necesitaría en este caso es un compilador para la maquina de 64 bits.
A la fecha, las palabras de 64 bits parecen ser suficientes para la mayoría de usos prácticos.
Aún así, es de mencionarse que el System/370 de IBM usa números de coma flotante de
128 bits, y muchos procesadores modernos incluyen registros de coma flotante de 128 bits.
Sin embargo, el System/370 era notable, en que también usaba números decimales de
longitud variable de hasta 16 bytes de longitud es decir, de 128 bits.
CONCLUSIONES
Con la finalización de este trabajo se puede notar la importancia que trajo consigo la
creación e implementación de la arquitectura x86 en lo que se refiere al desarrollo
tecnológico, el uso de registros los cuales son muy importantes para el funcionamiento
optimo de la misma así como el uso de segmentación en memoria. A pesar de esto el
transcurrir del tiempo y las mejoras y bajos costos de memoria llevaron a la necesidad de
implementar y utilizar mayor cantidad de memoria, lo cual hizo que se desarrollara la
arquitectura de x64 ya que con x86 esto no podía ser posible debido al tamaño de palabra,
los bits de coma flotante.
Con x64 se logro una mejor utilización de espacio en memoria pero debido a la pobre
disponibilidad de software de la misma no se esta aprovechando al máximo todo los
beneficios que esta arquitectura nos puede brindar, mas aun las personas que utilizan
software libre no tienen problema alguno con la utilización de la misma.
A pesar de esto estaremos obligados a migrar a 64 bits antes del “efecto 2038”, por un bug
referido con el tiempo (muy similar al “efecto 2000”) y que afecta a sistemas Unix y basados
en Unix, ya que la representación del tiempo es basada en el sistema POSIX, que se basa
en contar el numero de segundos transcurridos desde el 1 de enero de 1970 a las
00:00:00(ignorando los segundos intercalares).
REFERENCIAS
www.williamstallings.com
http://es.wikipedia.org/wiki/X86
http://es.wikipedia.org/wiki/64_bits
http://www.alegsa.com.ar/Dic/x86.php
http://es.wikipedia.org/wiki/DEC_Alpha
http://es.wikipedia.org/wiki/IA-64
http://es.wikipedia.org/wiki/AMD64
Grupo de Arquitectura de Computadores y Diseño Lógico. UEX, 1997. La
arquitectura del 8086/8088. Germán Galeano Gil. Juan A. Gómez Pulido.
Notas de Maquinas Computadoras I. Prof. Leonardo J. Aguirre
http://es.wikipedia.org/wiki/Categor%C3%ADa:Arquitectura_x86