Trabajo de Arquitectura del Computador.

14
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.

Transcript of Trabajo de Arquitectura del Computador.

Page 1: Trabajo de Arquitectura del Computador.

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.

Page 2: Trabajo de Arquitectura del Computador.

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.

Page 3: Trabajo de Arquitectura del Computador.

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.

Page 4: Trabajo de Arquitectura del Computador.

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.

Page 5: Trabajo de Arquitectura del Computador.

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.

Page 6: Trabajo de Arquitectura del Computador.

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.

Page 7: Trabajo de Arquitectura del Computador.

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

Page 8: Trabajo de Arquitectura del Computador.

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.

Page 9: Trabajo de Arquitectura del Computador.

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

Page 10: Trabajo de Arquitectura del Computador.

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.

Page 11: Trabajo de Arquitectura del Computador.

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