arquitectura de as diciembre 2do-2005

Upload: javier-alfonso-fernandez

Post on 08-Jul-2015

93 views

Category:

Documents


0 download

TRANSCRIPT

Arquitectura de Computadores: Electrnica Digital II ESTUDIO DE LA ARQUITECTURA Intel DE 32 BITS (IA-32)

16/06/06

El presente trabajo presenta ha sido diseado para servir de herramienta instruccional en el estudio de la arquitectura de los microprocesadores Intel, en especial los pertenecientes a la arquitectura de 32 bits (IA-32). En tal sentido este trabajo se presenta un anlisis de la arquitectura, la programacin y la conexin de la familia de Microprocesadores IA32 de Intel. 1. Resumen de la historia del desarrollo de la computacin1 baco, utilizado por los antiguos Babilonios 500 A.C.

La generacin cero - Computadoras mecnicas (1642 - 1945) Blaise Pascal (1623 1662, Francs): desarrolla su mquina calculadora a los 19 aos de edad en 1642. Esta mquina era capaz de sumar y restar. Barn Gottfried Wilhem von Leibniz (1646 - 1716): cientfico alemn que crea una mquina que adems de sumar y restar permita multiplicar y dividir en 1972. 150 aos despus Charles Babbage (1792-1871, Cambridge): crea su Mquina de Diferencias, que sumaba, restaba y ejecutaba un slo algoritmo (el de diferencias finitas empleando polinomios); la salida de la mquina era mediante tarjetas de cobre perforadas (precursor de las tarjetas perforadas y el CD-ROM). Despus crea la mquina analtica capaz de ejecutar diferentes algoritmos mediante el uso de tarjetas perforadas a la entrada y salida. El gran avance de la mquina analtica era que lea instrucciones de tarjetas perforadas y las ejecutaba. sta fue la primera mquina programable. Para desarrollar el software que requera esta mquina, Babbage contrat a Ada Augusta Lovelace, hija del poeta Britnico Lord Byron, convirtindose en la primera programadora del mundo. Konrad Zuse utiliz relevadores para construir mquinas calculadoras, que fueron destruidas en el bombardeo de Berln en 1944, estas fueron las primeras mquinas en utilizar relevadores (rels -lgica digital-) a nivel mundial. Posteriormente, John Atanasoff (del Iowa State College) y George Stibbitz (de Bells Labs), dos estadounidenses, disearon mquinas calculadoras diferentes. Atanasoff utilizaba aritmtica binaria e ide una memoria de condensadores las cuales se renovaban peridicamente para evitar que se perdiera la carga, a lo que llam refrescamiento. Los chips actuales de memoria dinmica (RAM) funcionan de esta manera. Aiken construy el Mark I en 1944 en Hardvard (mquina de relevadores), para cuando termin de construir su Mark II ya era obsoleta la tecnologa de relevadores. Avances Relevantes de la poca: -Primera mquina de cmputo. -Primera mquina capaz de ejecutar diferentes algoritmos y primer programador del mundo. -Uso de relevadores en computadores (lgica digital). -Concepcin de la memoria dinmica (memoria basada en capacitancias que requiere de procesos de refrescamiento). La primera generacin - Bulbos (1945 - 1955) ENIGMA: mquina alemana utilizada para la codificacin de mensajes durante la segunda guerra mundial. COLOSSUS: fue la respuesta de los ingleses ante la necesidad de descifrar los mensajes alemanes. Esta mquina no tuvo gran relevancia en el desarrollo de las computadoras debido a que se mantuvo en secreto por parte del gobierno britnico. John Mauchley y J. Presper Eckert construyeron la ENIAC (Electronic Numerical Integrator And Computer) en 1946 bajo los auspicios del ejrcito norteamericano para el clculo de las tablas de alcance de sus misiles. Sin embargo, la culminacin de este trabajo ocurri despus de la segunda guerra mundial por cuanto se permiti que se divulgara este avance logrando despertar el inters el los computadores electrnicos. Crearon una compaa que despus se convertira en Unisys Corporation. John von Neumann construy su versin del ENIAC (habiendo trabajado en este proyecto con Mauchley y Eckert) basado en un nuevo modelo creado por el mismo Neumann al cual denomin "mquina IAS". Neumann se percat que el programa poda ser almacenado en la memoria del computador y que la aritmtica binaria resultaba ser mejor que la decimal, hasta entonces utilizada. A partir de estas ideas Neumann describi lo que ahora se conoce como la mquina de von Neumann, que consista en cinco (5) partes, la memoria, la unidad aritmtica lgica, la unidad de control y los equipos de entrada y salida (ver Figura 1). La primera mquina construida con el modelo descrito por Neumann se llam EDSAC (Electronic Delay Storage Automatic Calculator) desarrollada por Maurice Wilkes y sus colegas de Cambridge (Inglaterra), se complet en Junio de 1949 y fue la primera computadora que almacenaba programas. En el Instituto tecnolgico de Masachussets (MIT) se crea una computadora que usaba memoria de ncleos magnticos y tamao de 16 bits, adems fu diseada para el control en tiempo real. Esta computadora se llam Whirldwind I. Este tamao de memoria se utiliza an hoy en los computadores modernos.1

Resumen histrico por Tanenbaum Andrew en su libro Organizacin de Computadoras: Un enfoque estructurado. Prentice Hall. Mxico. 2000. 13-24 pags.1/59

Elaborado por: Ing. David Fernndez

Arquitectura de Computadores: Electrnica Digital II

16/06/06

IBM para entonces era una compaa pequea dedicada a producir tarjetas perforadas y mquinas clasificadoras de tarjetas, hasta que en 1953 produjo la 701 tras lo cual se convertira en la empresa de mayor relevancia en el mercado cientfico.

Figura 1. Mquina de Von Neumann Avances de la poca -Primera mquina en utilizar Bulbos, componentes capaces de producir comportamientos digitales. -Creacin del modelo de von Neumann en la que se describen cinco componentes principales del computador. El modelo de von Neumann defina el primer computador que almacenaba un programa. -Primeras computadoras comerciales de aplicaciones cientficas de la empresa IBM. La segunda generacin - Transistores (1955 - 1965) El transistor fue inventado por los Laboratorios Bell en 1948 por John Bardeen, Walter Brattain y William Schockley a quienes se otorg el premio Nbel de fsica de 1956. Los transistores revolucionaron las computadoras y para finales de la dcada las computadoras de bulbos ya eran obsoletas. La primera computadora de transistores fue construida en el Instituto Tecnolgico de Massachusetts-MIT y se llam TX-0 (computadora Transistorizada eXperimental 0). Kenneth Olsen (que particip en los trabajos de la TX-0) form una compaa denominada DEC (Digital Equipment Corporation) en donde cre la PDP-1 en 1961 con un gran xito de mercado, incluso sobre la IBM 7090 sucesor transistorizado de la IBM 709. En el MIT se crea unos de los primeros juegos de computadoras del mundo para la PDP-1, era un juego de guerras espaciales. Cuatro aos despus DEC introdujo al mercado la PDP-8, este computador tena una innovacin importante: un bus nico (conformado por un conjunto de alambres en paralelo que conectaba a todos los componentes de la computadora), esta arquitectura marc una diferencia importante respecto de la mquina de von Neumann centrada en la memoria; en la actualidad todas las computadoras utilizan esta arquitectura. Ante las iniciativas de DEC, IBM introduce al mercado dos modelos de computadoras transistorizadas, la 7090 (especficamente para uso cientfico) y la IBM 1401 (de uso comercial pero muy verstil). En 1964 una pequea compaa llamada Control Data Corporation (CDC) introdujo al mercado una computadora muy avanzada para la poca denominada 6600, con un alto grado de paralelismo que obtuvo un xito rotundo de inmediato en el rea cientfica. El diseador de esta computadora fue Seymour Cray padre de las supercomputadores. Avances Relevantes de la poca -Invencin del transistor. -La DEC modifica el modelo de Von Neumann creando un bus nico para comunicar a todos los dispositivos entre s (modelo de arquitectura de computadoras orientada a un bus) -Surgimiento de las primeras computadoras con un alto grado de paralelismo, precursoras de las supercomputadores. La tercera generacin - Circuitos integrados (1965-1980) Esta poca inicia en 1958 con la invencin de los circuitos integrados por Jack Kilby. Posteriormente, en 1959, Robert Noyce refina el proceso de integracin haciendo posible su utilizacin, permitiendo colocar en un solo chip docenas de transistores. Esta innovacin hizo posible crear computadoras ms pequeas, rpidas y flexibles reduciendo de forma importante los costos. Cuando lleg la hora para sustituir a sus dos lneas principales la 7090 y la 1401 IBM introdujo la System/360. La System/360 era la primera familia de computadoras con diferentes en tamaos y potencia, pero que eran compatibles entre si (a diferencias de los modelos 7090 y 1401) y posean un lenguaje ensamblador comn. Otro avance importante de esta familia de computadoras fue la multiprogramacin, que consiste en la capacidad de tener varios programas en la memoria en ejecucin a la vez, mientras uno esperaba el trmino de una operacin (p.e. de entrada y salida) otro poda realizar sus operaciones. Entre otras innovaciones estaban la capacidad de emular a sus predecesores (gracias a la microprogramacin), mayor espacio de Elaborado por: Ing. David Fernndez 2/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

direccionamiento de memoria, introdujo los registros orientados hacia palabras de 32 bits y la memoria orientada a bytes. Las computadoras de hoy en da an usan todas estas caractersticas aadiendo, por supuesto, nuevos avances. La DEC introdujo al mercado para este momento la PDP-11 para competir con la serie System/360 de IBM, con arquitectura muy similar, con memoria organizada por bytes y registros orientadas a palabras.

Avances Relevantes de la poca -Invencin del circuito integrado. -Surgen las primeras computadoras multitareas, capaces de ejecutar varios programas de forma secuencial, todos compartiendo la memoria. -Capacidad de emulacin de otras arquitecturas. -Mayor direccionamiento de memoria. -Se orientan los registros a palabras mientras que la memoria principal se ordena por bytes. La cuarta generacin - Integracin a muy grande escala (1980 - actualidad) Para los aos ochenta la VLSI (integracin a muy grande escala, Very Large Scale of Integration) haba hecho posible colocar millones de transistores en un solo chip, dando origen a computadoras pequeas y ms rpidas. En esta poca se populariz la computadora personal, inicialmente se vendieron paquetes con los componentes bsicos para que el usuario construyera el equipo; pero no existan programas comerciales ni sistemas operativos para estas computadoras. En esta poca surgen las primeras computadoras Apple diseadas por Steve Jobs y Steve Wozniak con sistemas operativos y aplicaciones muy amigables. IBM tambin entr a competir en el rea de las computadoras personales con la IBM Personal Computer-PC, construida con componentes comerciales fciles de conseguir para el momento, incluyendo como procesador el 8080 de Intel. Microsoft crea el sistema operativo de la IBM Personal Computer al que denomin MS/DOS y despus dise el Windows. Avances Relevantes de la poca -Se desarrolla la tecnologa VLSI. -Se popularizan las computadoras personales. -Cobra importancia el software, surgimiento de Microsoft.

Tabla 1. Resumen de los eventos relevantes en el desarrollo de las computadoras2Ao 500AC Nombre baco Elaborado por Babilonia Avances de la poca y comentarios Primera mquina de calculo utilizada ampliamente

La generacin cero - Computadoras mecnicas (1642 - 1945) 1642 Entre 1646 y 1716 Blaise Pascal Gottfried Wilhem von Leibniz Primera mquina que realizaba sumas y restas (19 aos) Crea una mquina que adems multiplicaciones y divisiones de sumas y restas realizaba

1834

Analytical

Engine Babbage

Primer intento de construir un computador Digital que ejecutaba cualquier programa, su entrada era a travs de tarjetas perforadas (precursoras de las tarjetas perforadas ms modernas y del CDROM). Surge la primera programadora del mundo Ada Augusta Lovelace. (Mquina de diferencias) Primera mquina funcional en base a relevadores Crea la aritmtica binaria y establece los principios para memorias basadas en condensadores. Primera computadora Americana de propsito general

1936 1944

Z1 Mark I

Konrad Zuse John Atanasoff Aiken

La primera generacin - Bulbos (1945 - 1955) 1939 a 1945 19432

ENIGMA COLOSSU S

Gov. Alemn Gov. Britnico

Mquina de cmputo utilizada para la codificacin de mensajes durante la II Guerra Mundial. Primera Computadora Electrnica.

TANENBAUN Andrew. ORGANIZACIN DE COMPUTADORAS. UN ENFOQUE ESTRUCTURADO. Mxico. Cuarta Edicin. 2000. Pags. 13-24.3/59

Elaborado por: Ing. David Fernndez

Arquitectura de Computadores: Electrnica Digital II Ao Nombre IAS Elaborado por Von Neumann Avances de la poca y comentarios

16/06/06

Creacin del modelo IAS que define cinco partes bsicas de un computador (Memoria, Unidad de control, UAL y las entradas y salidas); almacenamiento de los programas en la memoria del computador. Primera computadora que almacenaba programas basada en el modelo IAS. Primera Computadora de Tiempo Real. Primer computador comercial.

1949 1951 1953

EDSAC Whirlwind I 701

Wilkes M.I.T IBM

La segunda generacin - Transistores (1955 - 1965) 1948 William Shockley, John Bardeen y Walter Bratain Creacin del transistor. Este grupo estaba conformado por ingenieros de los Laboratorios Bell y para 1956 se les otorg el premio Nobel en fsica.

1960 1961 1962 1963 1964 1965

TX-0 PDP-1 1401 7094 B5000 6600 PDP-8

Lincon Laboratory- Primer computador transistorizado. MIT DEC IBM IBM Burroughs CDC DEC Primera minicomputadora (50 vendidas $120000) . Mquina para pequeos negocios muy popular . Domin el medio cientfico para los principios de 1960. Primera mquina diseada para lenguaje de alto nivel. Primera supercomputadora cientfica. Primera minicomputadora de venta masiva (50,000 vendidas $16000).

La tercera generacin - Circuitos integrados (1965-1980) 1958 1964 1970 360 PDP-11 Jack Kilby (TI) IBM DEC Creacin del circuito integrado. Posteriormente Robert Noyce refina el proceso de integracin haciendo posible el uso de esta tecnologa. Primera familia de computadoras (con soporte para multiprogramacin). Domino el mercado de las minicomputadoras en 1970.

La cuarta generacin - Integracin a muy grande escala (1980 - actualidad) 1974 1974 1978 1981 1985 1987 1990 8080 CRAY-1 VAX IBM PC MIPS SPARC RS6000 Intel Cray DEC IBM MIPS Sun IBM Creacin del VLSI (Integracin a muy gran escala - Very Large Scale of Integration). Primer computador de propsito general de 8 bits en un solo chip. Primer Supercomputador vectorial. Primer superminicomputador de 32-bits . Inicio de la era de la computadora personal. Primera computadora comercial RISC. Primera estacin de trabajo basada en arquitectura RISC (SPARC). Primera computadora superescalar.

Elaborado por: Ing. David Fernndez

4/59

Arquitectura de Computadores: Electrnica Digital II 2. Arquitecturas del Computador y de la Unidad Central de Procesamiento (CPU) 2.1. Conceptos bsicos

16/06/06

a. Computador Digital Es un sistema electrnico de operacin digital compuesto por procesadores, memorias y dispositivos de entrada/salida todos interconectados mediante un bus comn (coleccin de cables en paralelo que transmiten direcciones, datos y seales de control, ver Figura 2), con el propsito de procesar datos segn diferentes tipos de algoritmos. Son sistemas para el procesamiento de datos de propsito general. Entre otras definiciones populares de computadoras se encuentran las siguientes:

Cualquier dispositivo capaz de procesar informacin para producir un resultado deseado. Sin importar cuan grande o pequeas sean, tpicamente las computadoras realizan su trabajo en tres pasos bien definidos: (1) aceptar una entrada, (2) procesar esta entrada de acuerdo a reglas predefinidas (o programas), y (3) producir una salida [http://www.microsoft.com/technet/prodtechnol/visio/visio2002/plan/glossary.mspx, 13/03/2006]. Mquina electrnica, analgica o digital, dotada de una memoria de gran capacidad y de mtodos de tratamiento de la informacin, capaz de resolver problemas matemticos y lgicos mediante la utilizacin automtica de programas informticos [Real Academia de la Lengua Espaola, www.rae.es, 13/03/2006]. Segn IBM un computador es una mquina que usa informacin, llamada entradas, y la procesa mediante un conjunto de instrucciones denominado programa de aplicacin. Dadas las entradas y las instrucciones la computadora produce y devuelve el resultado, a estos resultados se les denomina salida. En una manera la computadora es una calculadora compleja. Sin embargo, un computador es ms que una calculadora, utiliza diferentes programas para realizar distintas tareas. Como resultado, una computadora es un dispositivo de propsito general para el procesa de informacin.

Figura 2. Organizacin de Computadoras orientada a Bus nico b. Arquitectura de los Sistemas de Computadoras La arquitectura de un computador es similar a la arquitectura de edificios y construcciones, son las partes visibles de la estructura que componen a estas construcciones. El estudio de la arquitectura se dedica a estudiar el diseo de los computadores, en especial lo referente a las partes visibles a los programadores y usuarios. Las partes visibles de un sistema de computadora son los dispositivos de Entrada y Salida, la Memoria, el CPU (instrucciones y tipos de datos) y los Canales Buses(ver Figura 3). Otro concepto de importancia, que suele confundirse con el de Arquitectura, es el de Organizacin de Computadores. La Organizacin consiste en la manera como se planifican, ordenan, relacionan e implementa a nivel fsico el CPU, y los dems componentes antes referidos, para lograr cumplir con la funcionalidad definida por la arquitectura. Los sistemas modernos de computadora presentan una arquitectura orientada a buses (en adelante y a lo largo de este material, se usar la palabra canal indistintamente por buses), esto es, el microprocesador se comunica con el resto de los componentes del sistema mediante el uso de buses. Los buses pueden definirse como conjuntos de conexiones paralelas entre los diferentes componentes que conforman el computador. Son las carreteras que comunican a todos

Elaborado por: Ing. David Fernndez

5/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

los elementos de un computador entre s. Los buses son los mecanismos de comunicacin entre los componentes de un computador. Los principales buses que contienen los computadores son: El bus o canal de direcciones: que permite al microprocesador especificar direcciones de memoria o del espacio de entrada/salida, para la lectura o escritura de la informacin. El bus o canal de datos: transfiere datos entre el microprocesador, la memoria y/o los dispositivos de entrada/salida. El bus o canal de control: suministra las seales de control requeridas para coordinar la comunicacin entre el microprocesador y el resto del sistema (e.g. coordinacin de las operaciones de escritura/lectura entre el microprocesador y la memoria o los dispositivos de E/S).

ComputadorUnidad Central de Procesamiento Memoria Principal

Sistemade Interconexin Buses Entrada / Salida

Figura 3. Componentes Bsicos de un Microprocesador Es importante destacar que el ancho de los canales depende de la arquitectura del microprocesador que se est utilizando, pudiendo cambiar este tamao de un procesador a otro. Adicionalmente, debe observarse que el ancho del canal de datos influye en la cantidad de datos que pueden transferirse entre la memoria y el microprocesador, mientras que el canal de direcciones determina la cantidad de memoria que puede ser direccionada por el microprocesador. Estos conceptos sern estudiados con ms profundidad en las secciones venideras. Estas son nociones simples de como fueron los primeros buses de computadoras; actualmente, estas tecnologas ha sufridos grandes cambios para adaptarse a las exigencias de comunicacin de los diferentes dispositivos en un sistema de computacin. De manera que hoy en da se habla de que existe ms de un conjunto de bus. En los microprocesadores Intel se poseen dos grupos de buses, uno frontal para la memoria y los dispositivos que transfieren ms datos (como las tarjetas de video AGP y el bus PCI) y otro para los dispositivos de entrada y salida (E/S) ms lentos. Al bus de la memoria se le denomina NorthBridge y al bus de los dispositivos de E/S se le denomina SouthBridge. El bus SouthBridge est conectado al sistema a travs del bus PCI. En el bus PCI normalmente se conectan dispositivos como las tarjetas de sonido, los puertos paralelos, seriales y usb, los discos duros, etc. En la Figura 4 se observa una diagrama esquemtico de como se dividan los buses para un procesador Celeron Mobile en Northbridge y Southridge. Las arquitecturas ms nuevas implementan buses independientes para cada dispositivo, as como lo planteaba el modelo de Von Neumann. En estos nuevos buses se implementan en dos controladores, uno de alta velocidad y otro de baja velocidad. Al controlador de alta velocidad se conecta la memoria y la tarjeta de video; este posee conexin directa al CPU. El controlador de baja velocidad se conecta al resto de los dispositivos de E/S (puertos usb, seriales, paralelos y PCI, tarjetas de sonido, etc.) y se conecta al CPU a travs del controlador de alta velocidad por un enlace especial de alta velocidad (ver Figura 5).

Elaborado por: Ing. David Fernndez

6/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Figura 4. Esquema de los buses Northbridge y Southbridge para un microprocesador Celeron

Mobile

Figura 5. Esquema de buses mediante controladores en microprocesadores Intel c. Arquitectura de los CPU (Unidad de Procesador Central por sus siglas en ingls Central Processing Unit) Las CPU son los microprocesadores que controlan todos los sistemas de computo modernos; representan el cerebro de estos sistemas y su funcin bsica es la de ejecutar los programas almacenados en la memoria principal coordinando todas las actividades del sistema de computacin. Los pasos bsicos seguidos por las CPU para la ejecucin de un programa son: Buscar las instrucciones en la memoria a travs de direcciones predefinidas Elaborado por: Ing. David Fernndez 7/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Examinar y preprocesar estas instrucciones Ejecutar una instruccin tras otra

La CPU se compone de cuatro partes fundamentales, la unidad de control, la unidad aritmtica lgica, los registros y el bus de conexin como se observa en la Figura 6. En la actualidad los microprocesadores poseen muchos ms componentes que permiten realizar las mismas funciones con mayor rapidez y un alto grado de paralelismo que las realizadas por los cuatro elementos antes mencionados del modelo simplificado de un CPU. Un concepto alterno de microprocesadores ms formal y enfocado hacia el hardware es: un circuito integrado compuesto de miles o millones de transistores capaces de manipular datos en diversas formas. La manipulacin que se hace sobre los datos es determinada mediante los programas software (conjunto de instrucciones ordenadas segn un algoritmo) que ejecuta el computador 3. Funciones principales de los componentes principales de la CPU: La unidad de control: que se encarga de buscar las instrucciones en la memoria principal y determinar su tipo. La unidad aritmtica lgica: que como bien lo indica su nombre, est a cargo de todas las operaciones aritmticas y lgicas necesarias en la ejecucin de ciertas instrucciones. Los registros: son memorias pequeas y de alta velocidad que sirven para almacenar resultados de las operaciones realizadas por las diferentes unidades de procesamiento de los CPU. El bus es el componente interno de la CPU encargado de transmitir los datos, direcciones y seales de control, entre las diferentes unidades del CPU.

CPURegistros Unidad Aritmtica Lgica Conexin Interna del CPU

Unidad de Control

Figura 6. Componentes de un Computador Personal 2.2. Enfoque estructurado de Organizacin de Computadores (lectura complementaria) A pesar de que este trabajo no se dedica al estudio de la organizacin de computadores, es importante conocer algunos de los conceptos bsicos que rigen esta materia. En este sentido, se presenta a continuacin el enfoque de organizacin de computadoras que planteado en [1] . El problema de diseo de las computadoras radica en que se desea facilidad para su programacin, manteniendo equipo que sea razonablemente simple de construir para hacerlo factible econmicamente. Estos dos criterios construccin colidan en cuanto a que hacer un sistema simple de programar requiere gran complejidad para construccin; mientras que hacer un sistema muy simple en cuanto a su construccin resulta en un equipo difcil programar. un de su de

Las soluciones que han sido presentadas ante esta problemtica radican en la construccin de una mquina simple y difcil de programar en una primer nivel (nivel 0). Esta mquina usara un lenguaje muy simple (digital-difcil de programar), por lo cual se construye un segundo nivel (nivel 1), sobre el primero, que permita interpretar instrucciones ms complejas y traducirlas a las instrucciones del nivel inferior para su ejecucin. En teora se podran realizar microprocesadores de n-niveles pero quizs esto resultara imprctico. Los sistemas modernos poseen normalmente 6 niveles como se muestra en la Figura 7. Cada nivel define un conjunto de instrucciones/datos que puede ejecutar. Toda la ejecucin real se produce en el nivel 0; debido a esto, cada nivel ha de traducir sus instrucciones para que estas puedan ser ejecutadas por el nivel inferior hasta llegar al nivel 0 en donde se ejecutar finalmente el programa. A los niveles, en este tipo de organizacin, se les denomina mquinas virtuales, debido a que (si se hace abstraccin3

http://www.intel.com/intel/intelis/museum/exhibit/hist_micro/hof/whatis.htm. 2003.8/59

Elaborado por: Ing. David Fernndez

Arquitectura de Computadores: Electrnica Digital II

16/06/06

respecto de los dems niveles) cada uno de estos define conjuntos de instrucciones que sabe ejecutar. Cada nivel representa una arquitectura de computador.

Figura 7. Computador de seis capas

El nivel 0 (lgica digital) es el nivel de compuertas que permite realizar operaciones lgicas mediante diferentes combinaciones. Al combinar estas compuertas se pueden crear pequeas memorias para almacenar un bit, y al combinar estas memorias se pueden crear registros que almacenen conjuntos de bits. Los registros que se crean de tamaos comunes como 8, 16, 32, 64 128 bits. En este nivel, cada registro puede contener un dato binario que puede operarse con la lgica digital, pudiendo sumar valores, restarlos, multiplicarlos y dividirlos, entre otras operaciones. El nivel 1 (microarquitectura) combina un conjunto de registros (entre 8 a 32 tpicamente) para formar una memoria local con una Unidad Aritmtica Lgica (ALU) que puede realizar operaciones sobre estos datos. Se definen trayectorias entre los registros y la ALU para que se puedan realizar operaciones (comnmente entre dos registros) y su resultado se almacene en uno de los registro. En las computadoras antiguas se sola usar un microprograma para controlar la trayectoria entre la ALU y los registros, pero en la mayora de los computadores modernos se implementa este programa en hardware y a esto se le denomina microcdigo. Las mquinas que poseen microporgramas ejecutan los programas del nivel 2 interpretndolo lnea a lnea. La interpretacin consiste en obtener una instruccin, examinarla y ejecutarla. Las computadoras con microcdigo hacen lo mismo pero la interpretacin la realiza directamente el hardware. Nivel 2, describe propiamente las instrucciones que es capaz de ejecutar un computador a nivel de microprograma. Al conjunto de instrucciones de este nivel y a los datos que es capaz de manejar se le denomina nivel de Arquitectura de Conjunto de Instrucciones o nivel ISA. Los manuales de programacin de microprocesadores que elaboran los fabricantes explican las instrucciones de este nivel. El nivel 3 es normalmente un nivel hbrido. Maneja las instrucciones del nivel 2 e introduce nuevas instrucciones, un modelo para el manejo de memoria, archivos y recursos del computador, mecanismos para ejecutar programas simultneamente y otras caractersticas. Este es el nivel en el que se encuentran los sistemas operativos (MSDos, Windows, UNIX, Linux, OS/2, Solaris, etc.). Las nuevas instrucciones y caractersticas introducidas en este nivel son ejecutadas por el nivel inferior al ser traducidas por el sistema operativo que resulta ser un intrprete de la arquitectura definida por este nivel.

Elaborado por: Ing. David Fernndez

9/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Los prximos niveles son los diseados para los usuarios, mientras que los niveles inferiores fueron diseados para facilitar la interaccin del usuario con el computador. Los programas de los niveles inferiores, en especial del nivel tres, son diseados por programadores de sistemas mientras que los programas del nivel 4 y 5 son diseados por programadores de aplicaciones y a veces hasta por el usuario comn. El nivel 4 se denomina ensamblador y define un lenguaje alfanumrico ms fcil de comprender por los seres humanos que el lenguaje binario manejado por los niveles inferiores. Para ejecutar el lenguaje ensamblador hay que primero traducirlo a binario y posteriormente cada nivel subyacente se encargar de ejecutarlo como describi en cada nivel (principalmente a travs de la interpretacin del programa en cada nivel). Por ltimo, el nivel 5 es el nivel en el que nos desempeamos los usuarios comunes para resolver problemas mediante aplicaciones. En este nivel existe una ingente cantidad de lenguajes de programacin de alto nivel que se traducen a los niveles inferiores para ser ejecutados mediante programas denominados compiladores. Algunos de estos lenguajes son interpretados, como es el caso del Basic, Matlab y el Java entre otros.

Elaborado por: Ing. David Fernndez

10/59

Arquitectura de Computadores: Electrnica Digital II 3. Evolucin de los microprocesadores Intel4 3.1. El microprocesador de 4 bits

16/06/06

Fu creado en 1971, ste era capaz de direccionar 4096 localidades de memoria de 4 bits y con solo 45 instrucciones tena una funcionalidad limitada. Nota histrica: este microprocesador surge como una solucin a un problema de diseo que plante una compaa japonesa llamada Busicom en 1969 para la creacin de una mquina calculadora basada en chips. El ingeniero a cargo de este proyecto en Intel, Ted Hoff al examinar las exigencias se percat de que era posible utilizar en lugar de un conjunto de chips un microprocesador de 4 bits de propsito general que hara el mismo trabajo que l conjunto de chips propuesto por Busicom. Estos eventos dieron origen al primer microprocesador del mundo. Avances -Primer microprocesador Intel y del mundo -45 instrucciones 3.2. El microprocesador de 8 bits Creado a principios de 1972 Intel produjo el 8008 que fue el primer microprocesador de 8 bits (8 bits = 1 byte) con una memoria de 16 K (1 K equivale a 1024 direcciones) de 8 bits con un total de 48 instrucciones. Posteriormente, en 1973 Intel introdujo al mercado el 8080, que era 10 veces ms veloz que el 8008 (una suma se realizaba en 2 microsegundos en el 8080 en lugar de los 20 microsegundos de su predecesor), era capaz de direccionar ms memoria y adems era compatible con la tecnologa TTL, lo que permiti interconectarse directamente a dispositivos digitales TTL (TransistorTransistor Logic). En 1977 Intel crea el 8085 ligeramente ms rpido que el 8080 pero con algunas ventajas adicionales, incorporaba un generador de reloj y el controlador del sistema, dispositivos que eran externos en el 8080 . Avances -Primer microprocesador de 8bits. -Incremento en las capacidades de manejo de memoria. -Compatibilidad con la tecnologa TTL. -Mejoras en las velocidades de reloj. -Incorpora el generador de reloj y un controlador del sistema en el CPU. 3.3. El microprocesador de 16-bits En 1978 Intel lanza al mercado su primer procesador de 16 bits denominado 8086 y casi un aos ms tarde introduce al mercado otra versin ms econmica denominado 8088. Ambos dispositivos son de 16-bits y ejecutan instrucciones a casi 400 ns (2,5 millones de instrucciones por segundo) con relojes entre 5 y 10 MHz. Poseen una capacidad para direccionar una memoria de 1MB (igual a 1000 Kbytes -KB-, 1 KB = 1024 bytes -B- y 1 B = 8 bits -b-) lo que es lo mismo que 512 KB palabras (una palabra tiene 16 bits). Esta evolucin fue impulsada por la necesidad de direccionar ms memoria (de los 64 KB de memoria) a los cuales poda acceder el 8080 y por las necesidades de incorporar capacidades de multiplicacin y divisin. Con el 8086 se introduce el manejo de la memoria por medio de segmentos, a esto se le llam segmentacin de memoria. Estos microprocesadores utilizan un registro de 16 bits capaz de acceder a un segmento de memoria de 64 KB. Intel contino utilizando la arquitectura de 16 bits en dos procesadores adicionales el 80186 y el 80286. Ambos fueron muy populares an cuando el 80186 fue utilizado mayoritariamente en aplicaciones de control o como controlador de dispositivos en las tarjetas madres o tarjetas de propsito especfico. El 80286 representaba una mejora real sobre la arquitectura de 16 bits preexistente, posea capacidad para direccionar una mayor cantidad de memoria 16 MB (mediante 24 bits en el bus de direcciones) en lugar de 1 MB y la velocidad haba alcanzado los 16 MHz. Adicionalmente, incluy un nuevo modo de operacin, el modo protegido introdujo mejor seguridad y proteccin del sistema de memoria, y el manejo de memoria virtual para el intercambio de segmentos de memoria. Avances -Arquitecturas de 16 bits. -Incrementos en las velocidades de reloj y en las capacidades de memoria. -Introduccin del manejo segmentado de memoria con segmentos de 64 KB. -Introduccin del Modo Protegido como nuevo modo de operacin de las CPU de la familia Intel. - Memoria virtual. 3.4. El microprocesador de 32-bits Los primeros procesadores de 32 bits que produjo Intel fueron el 80386 y el 80486. El 80386 fue el primero en salir al4

http://www.intel.com/pressroom/kits/quickref.htm. 2003.11/59

Elaborado por: Ing. David Fernndez

Arquitectura de Computadores: Electrnica Digital II

16/06/06

mercado con una velocidad de reloj de 33 MHz y una capacidad de direccionamiento de memoria de 4 GB, el 80486 lo sigui poco tiempo despus. Estos procesadores posean registros de 32 bits tanto para el manejo de operandos as como para el de direcciones, adems de ofrecer la capacidad para ser manejados como registros de 16 bits, ofreciendo de esta manera compatibilidad con las arquitecturas anteriores. En el 80386 se introdujo la paginacin como una herramienta adicional para la administracin de memoria en el modelo de memoria segmentada y es el primer microprocesador en incorporar etapas paralelas en procesamiento (lo que se conoce como paralelismo). En el 80386 se incluyen 6 etapas de paralelismo compuestas por unidades de procesamiento especfico, a continuacin se nombran estas unidades: Unidad de interfaz del bus: que permita el acceso a la memoria y a los dispositivos de E/S por parte de las dems unidades del CPU. Unidad de prebsqueda de instrucciones: permita recibir cdigo objeto de la unidad del bus y colocarlo en una cola de 16 bytes. Unidad de decodificacin de instrucciones: decodifica el cdigo de la cola de la unida de prebsqueda y lo convierte en microcdigo. Unidad de ejecucin: ejecuta instrucciones de microcdigo. Unidad de segmentacin: traduce direcciones lgicas a direcciones lineales y realiza verificaciones de proteccin. Unidad de paginacin: realiza la conversin de direcciones lineales a fsicas, realiza verificaciones de proteccin de paginacin y mantiene un cach con las pginas ms recientes usadas. Este procesador incluy tambin un nuevo modo de funcionamiento denominado modo virtual-8086, cuyo propsito era el de mejorar la eficiencia en el procesamiento de aplicaciones desarrolladas para los microprocesadores 8086 y 8088. Estos microprocesadores son capaces de trabajar tanto con el modelo de memoria segmentado como el modelo de memoria plano (en el cual todos los segmentos se solapan y tienen acceso a los 4GB completos de memoria). El 80486 tena el doble de la velocidad de reloj (66 MHz) que su predecesor y exista una versin que adicionalmente incorpora un coprocesador aritmtico (versin 80486DX) y una memoria cach de 8 KB en el chip. En el 80486 se aaden ms etapas paralelas; se dividen las unidades de decodificacin y ejecucin en cinco lneas de ejecucin independientes que reciben el nombre de Pipeline (este alto grado de paralelismo permiti procesar hasta 5 instrucciones a la vez). La tecnologa de procesamiento paralelo permiti que estos procesadores ejecutaran una instruccin por ciclo de reloj. Finalmente, se aade un cach nivel 1 al microprocesador, se integra la unidad de punto flotante al chip del CPU y se aaden caractersticas de ahorro energtico al microprocesador. El siguiente procesador fue el Pentium que apareci con dos lneas de ejecucin (dos Pipelines, convirtindose en la primera arquitectura superescalar de Intel). Incluy adems un sistema de prediccin de ramificaciones de algoritmos y un controlador avanzado de control de interrupciones (Advanced Programable Interrupt Controller-APIC) para permitir la conexin de mltiples procesadores Pentium. Esta arquitectura permiti la ejecucin de hasta dos instrucciones en un ciclo de reloj. El cach se almacen dentro del chip y se duplic su tamao, dedicando 8 KB a datos y los 8KB restantes a cdigo. Este microprocesador mejora la compatibilidad del modo virtual-8086 y expande el tamao de los caminos de datos internos de microprocesador a 128 bits y 256 bits. El bus de datos externo incrementa de 32 bits a 64 bits.

Elaborado por: Ing. David Fernndez

12/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Figura 8. Diagrama de bloques del PentiumEl ltimo procesador introducido en la familia Pentium fue el Pentium MMX. Este inclua la tecnologa MMX que usaba las instrucciones SIMD (single-instruction, multiple-data) para el procesamiento en paralelo de enteros empaquetados contenidos en registros MMX de 64 bits. La tecnologa MMX permiti mejorar grandemente el rendimiento de estos procesadores en la ejecucin de aplicaciones multimedia, procesamiento de imgenes y en aplicaciones de compresin de datos. Avances -Arquitectura de 32bits. -386: Introduccin del Modo Virtual-8086. -386: Introduccin de la paginacin como metodologa para el manejo de la memoria segmentada. -386: incorpora 6 etapas de paralelismo. -486: divide en cinco lneas de ejecucin en paralelo a las unidades de decodificacin y ejecucin, esto recibe el nombre de Pipeline y permiti ejecutar una instruccin por ciclo de reloj. -486: incluye coprocesador matemtico y memoria cach. -Pentium: introduce un segundo Pipeline incrementando el paralelismo, a estas configuraciones se les llama arquitectura superescalar, logrando ejecutar hasta dos instrucciones por ciclo de reloj. -Pentium: incluye un nuevo sistemas de prediccin de ramas de algoritmos. -Pentium MMX: introduce instrucciones SIMD para la tecnologa MMX. 3.5. Familia de procesadores P6: se basan en una nueva micro-arquitectura superescalar que ofrece mejor rendimiento que las arquitecturas anteriores con la misma tecnologa de fabricacin de 0.6 micrmetros de 4 capas de metal BICMOS. El microprocesador Pentium Pro fue el primero en el que se implement esta tecnologa, seguido del Intel Pentium II, Pentium II Xeon, Celeron, Pentium III y Pentium III Xeon. El Pentium Pro posea una arquitectura superescalar con tres lneas de procesamiento (tres Pipelines de 12 etapas

Elaborado por: Ing. David Fernndez

13/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

cada una) lo que le permiti ejecutar hasta tres instrucciones por ciclo de reloj. En este procesador tambin se introdujo el concepto de ejecucin dinmica y se le aadi un segundo cach denominado cach de nivel 2 con un tamao de 256 KB. Por ltimo, incluy un bus de direcciones de 36 bits lo que le permiti acceder a un total de 64GB de memoria. La ejecucin dinmica consiste en la capacidad de predecir las ramificaciones del programa que sern ejecutadas (deep branch prediction), hacer seguimiento de la trayectoria de datos dentro del CPU para aprovechar las oportunidades de ejecucin de instrucciones fuera de orden (manteniendo a las unidades del CPU ocupadas la mayor parte del tiempo - dynamic data flow analisys y out of order execution); y finalmente, adelantar la ejecucin de instrucciones posteriores a las ramificaciones con datos independientes de las ramificaciones (speculative execution) para mantener ocupadas las unidades del CPU y luego retirar los resultados de forma ordenada. El Pipeline de la arquitectura P6 se dividi en cuatro (4) secciones una cache de nivel 1 (Level 1) y otro de nivel 2 (Level 2), una seccin denominada front end, un ncleo de ejecucin fuera de orden y una seccin para el retiro de instrucciones.

Figura 9. Microarquitectura del P63.6. Microarquitectura NetBurst La siguiente arquitectura construida por Intel crea para el desarrollo de sus nuevos procesadores Xeon y Pentium 4 es conocida como NetBurst. Bsicamente, la arquitectura NetBurst mejora las caractersticas de velocidad de la arquitectura P6 en casi todos los niveles (tanto en las unidades de ejecucin, como en las unidades Aritmtica-lgicas), incrementa el paralelismo de los pipelines a 20 etapas por pipeline. Tambin se mejoran las caractersticas de ejecucin dinmica, aade las instrucciones SSE2, SSE3 y aade una cach nivel 3 (Level 3). 3.7. Hyperthreading y Dual-Core La tecnologa Hyperthreading fu desarrollada para mejorar el rendimiento de la arquitectura IA32 al ejecutar en sistemas operativos multi-hilos y en la ejecucin de aplicaciones de un hilo pero que se ejecutan en entornos multitareas. El Hyperthreading permite ejecutar dos o ms hilos de cdigos separados en un mismo procesador al mismo tiempo. Los microprocesadores con esta tecnologa estn dotados de dos procesadores lgicos internos cada uno con entornos de ejecucin separados (a esto se le denomina estado de la arquitectura Architectural State, AS por sus siglas en ingls, ver Figura 10).

Elaborado por: Ing. David Fernndez

14/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Figura 10. Comparacin entre un procesador IA-32 con tecnologa Hyperthreading y un sistema con dos procesadoresEsta tecnologa bsicamente duplica los registros de datos, segmento, control, depuracin y la mayora de los registros MSR, adems de proveer un controlador de interrupcin por cada procesador lgico. Sin embargo, se comparten las unidades de ejecucin y la interfaz con el bus. Despus de reiniciar estos microprocesadores cada procesador lgico puede iniciar, detener y controlar la ejecucin de hilos diferentes sin afectar el funcionamiento del otro procesador lgico. La tecnologa Dual Core representa otra manera de mejorar las capacidad de ejecucin de mltiples hilos a nivel de hardware. Esta tecnologa provee dos ncleos de ejecucin completos dentro de un mismo empaque fsico. Las primera implementaciones del Dual Core son los procesadores Pentium D, existe otra familia de procesadores de la arquitectura IA-32 denominados Pentium processor Extreme Edition que incorporan las tecnologas Hyperthreading y Dual Core ofreciendo un rendimiento efectivo cercano al de cuatro procesadores (ver Figura 11).

Figura 11. Procesadores IA-32 con soporte Dual CoreEn la se presenta un resumen de la evolucin de los microprocesadores Intel. Es de especial inters observar como los cambios en las arquitecturas producen cambios en los registros y en la capacidad de memoria manejada; tambin es de inters observar las innovaciones tecnolgicas, el incremento de las velocidades de reloj y el aumento en el nmero de transistores utilizados.

Elaborado por: Ing. David Fernndez

15/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Tabla 2. Resumen de la evolucin de los microprocesadores intel [2]Caractersticas Espacio Velocidad (Tamao Registros/ Tecnologa de Fecha de Nmero de Mximo de de Reloj Bus Datos / Integracin Introduccin Transistores Memoria Cachs) Microprocesadores de 4 bits 108 KHz 4 bits PG5/4 bits/no 640 Bytes 10 micrones 15/11/1971 2300 - 45 instrucciones. - 4096 direcciones de memoria direccionable de 4 bits. Microprocesadores de 8 bits 200 KHz 8 bits PG/8 bits/no 16 KB 10 micrones 4/1972 3500 2 MHz 8 bits PG/8 bits/no 64 KB 6 micrones 4/1974 6000 - 10 veces ms rpido que el 8008. - 48 instrucciones. - Compatible con la tecnologa TTL (Seguido del 8085 que posee un generador de reloj y un controlador del sistema). 2 MHz 8 bits PG/8 bits/no 64 KB 3 micrones 3/1976 6500 Microprocesadores de 16 bits 10 MHz 16 bits PG/16 bits/no 1 MB 3 micrones 8/6/1978 8 MHz 16 bits PG/8 bits/no 6/1979 5 MHz 29000 - Se aaden instrucciones de multiplicacin y divisin (2.5 MIP). - Sistema de memoria Segmentado. 12 MHz 16 bits PG/16 bits/no 1 MB 3 micrones 1982 --10 MHz 12 MHz 16 bits PG/16 bits/no 16 MB 1.5 micrones 2/1982 134000 10 MHz 6 MHz - Memoria virtual. - Modo protegido. - 8 MIP (Millones de Instrucciones Por segundo). Microprocesadores de 32 bits 33 MHz 32 bits PG/32 bits/no 4 GB 1.5 / 1 micrones 17/10/1985 275000 25 MHz 20 MHz 16 MHz - Modo virtual-8086. - Paginacin. - Primer micro de Intel en tener etapas de ejecucin en paralelo (6 etapas). - Registro de 32 bits compatibles con los de 16 bits anteriores. 33 MHz 32 bits PG/32 bits/no 4 GB 1.5 / 1 micrones 16/6/1988 275000 25 MHz 20 MHz 16 MHz 25 MHz 32 bits PG/16 bits/no 4 GB 1 micrn 15/10/1990 855000 20 MHz 100 MHz 32 bits PG/32 bits/ 4 GB 0.8 / 1 micrones 10/4/1989 1200000 hasta 8 KB 50 MHz 33 MHz 25 MHz Incluye coprocesador matemtico x87 FPU. Modo de manejo de sistema. Soporte de cach para mltiples procesadores. 54 MIP con memoria cach L1, que ejecuta hasta una instruccin por ciclo de reloj (1 Pipeline). Trabaja con el modelo de memoria plana y segmentada . 25 MHz 32 bits PG/32 bits/no 4 GB 1 micrn 15/10/1990 20 MHz Procesadores para las porttiles (Notebook). 33 MHz 32 bits PG/32 bits/no 4 GB 0.8 / 1 micrones 16/9/1991

4004

8008 8080

8085 8086 8088

80186 80286

80386 DX

80386 SX

80386 SL 80486 DX

80486 SL 80486 SX5

855000 1185000 /

PG: registros de propsito general.16/59

Elaborado por: Ing. David Fernndez

Arquitectura de Computadores: Electrnica Digital II 25 MHz 20 MHz 16 MHz - No posee la unidad de punto flotante 66 MHz 32 bits PG/ 64 GB 60 MHz 64 bits/16 KB

16/06/06 900000

Pentium

0.8 / 0.6 / 0.35 micrones

22/3/1993

3100000 / 3300000 /

Pentium Pro

Pentium II

Celeron

4500000 - Dos pipelines de ejecucin (primera arquitectura superescalar) y 100 MIP. - Unidad de prediccin de ramas (especialmente til en programas cclicos). - Los ltimos procesadores Pentium producidos introdujeron la arquitectura MMX especial para procesamiento de diferentes medios, imgenes y compresin de datos con las instrucciones SIMD (Single Instruction Multiple Data -Instrucciones sencillas con mltiples datos ). - Direccionamiento expandido de 64 GB. 200 MHz 32 bits PG / 64 bits / 64 GB 0.6 / 0.35 1/11/1995 5500000 / 180 MHz L1:8 KB y L2:256 KB micrones 15500000 166 MHz 512 KB 1 MB 150 MHz - Tres pipelines de ejecucin (hasta tres instrucciones mximas por ciclo de reloj). - Introduccin de la arquitectura P6. - Ejecucin dinmica que introduce cinco unidades de ejecucin. - No posee soporte MMX pero aade una memoria cach L2. 450 Mhz 32 bits PG / 64 bits / 64 GB 0.35 / 0.25 7/5/1997 7500000 Hasta L1:32 KB y L2:256 KB micrones 300 MHz 512 KB 1 MB 266 MHz 233 MHz - Introduce soporte MMX en la arquitectura P6. - El cach L2 se conecta a la mitad de la frecuencia del reloj. - Empaquetamiento del chip en formato SECC (single edge contact cartrige Cartucho de contactos de un slo lado). 2.20 GHz 32 bits PG / 64 bits / 4 GB 0.25 / 0.18 / 0.13 15/4/1998 7500000 / L1:32 KB y L2:128 KB micrones hasta 19000000

300 MHz 266 MHz - Empaquetamiento en formato PPGA (Plastic Pin Grid Array Arreglo de Rejilla de Espigas Plsticas) y SECC. Pentium II Xeon 450 MHz 32 bits PG / 64 bits / 64 GB 0.25 micrones 29/6/1998 7500000 L1:8 KB y L2:256 KB 400 MHz 512 KB 1 MB 2 MB - Aade Caches L2 ms grandes a la velocidad del reloj del sistema. - Empaquetamiento en formato SECC. Pentium III 900 MHz 32bits PG / 64 bits / 64 GB 0.25 / 0.18 17/3/1999 9500000 / Xeon L1:8 KB y L2:512 KB micrones hasta 28000000 1 MB 2 MB 550 MHz 500 MHz - Incluye una Cach de transferencia avanzada a la velocidad de reloj. - Empaquetamiento en formato PPGA y SECC. Pentium III 1 GHz 32 bits PG / 64 bits / 64 GB 0.25 / 0.18 26/2/1999 9500000 / L1:8 KB y L2:512 KB micrones 600 MHz 25000000 550 MHz 500 MHz 450 MHz - Empaquetamiento en formato PPGA y SECC. - Aade las Streaming SIMD Extensions (SSE) a la tecnologa MMX preexistente y registros de 128 bits, adems de la habilidad para operar sobre nmeros punto flotante de precisin sencilla. Pentium 4 2 GHz 32 bits PG / - / L1:8 64 GB 0.18 / 0.13 20/11/2000 42000000 / 1.90 GHz KB y L2:256 KB micrones 55000000 1.80 GHz 1.70 GHz 1.60 GHz 1.50 GHz 1.40 GHz Elaborado por: Ing. David Fernndez 17/59

Arquitectura de Computadores: Electrnica Digital II - Incluye la arquitectura NetBurst (Mayor arquitectura superescalar, instrucciones SSE3, bus interno de 400MHZ). - Empaquetamiento PGA423. - En las ltimas versiones (del 2003 en adelante) se incluye la nueva arquitectura con HiperThreading. - A partir de mediados del 2005 se incluye una nueva tecnologa denomina Dual Core que incorpora dos procesadores dentro de un mismo encapsulamiento y se tiene planificado liberar en un futuro cercano una tecnologa dual core con hyperthreading.

16/06/06

2 GHz 32 bits PG / - / L1:8 64 GB 0.18 / 0.13 21/5/2001 42000000 1.70 GHz KB y L2:512 KB micrones 1.50 GHz L2:256 KB y L3:1 MB 1.40 GHz - Habilitado para integracin rpida en sistemas con mltiples procesadores. - En las versiones MP se incluye la nueva arquitectura con HyperThreading y prximamente Dual Core. Microprocesadores de 64 bits Intel Itanium 800 MHz 64 bits PG / - / L3:2 0.18 micrones -/5/2001 25000000 733 MHz MB 4 MB Intel Itanium 2 1 GHz -/-/0.18 micrones 8/7/2002 220000000 900 MHz

Intel Xeon

Elaborado por: Ing. David Fernndez

18/59

Arquitectura de Computadores: Electrnica Digital II 3.8. Ley de Moore6 (1965)

16/06/06

La Ley de Moore fue una observacin hecha por uno de los ingenieros fundadores de Intel, en la que se establece que la cantidad de transistores en los circuitos integrados se duplica cada 18 meses. Sorprendentemente, an hoy esta ley sigue mantenindose vigente como puede apreciarse en la Figura 12 y en la .

Figura 12. Relacin de tamaos de los CPU Intel del 4004 al Pentium II7

Tabla 3. Incremento en el nmero de transistores en los microprocesadores intelProcesador 4004 8008 8080 8086 286 386 processor 486 DX processor Pentium processor Pentium II processor Pentium III processor Pentium 4 processor Ao de Introduccin al Mercado 1971 1972 1974 1978 1982 1985 1989 1993 1997 1999 2000 Transistores 2,250 2,500 5,000 29,000 120,000 275,000 1,180,000 3,100,000 7,500,000 24,000,000 42,000,000

6 7

http://www.intel.com/research/silicon/mooreslaw.htm. http://www.intel.com/intel/intelis/museum/exhibit/hist_micro/hof/tspecs.htm. 2003.19/59

Elaborado por: Ing. David Fernndez

Arquitectura de Computadores: Electrnica Digital II 4. Arquitectura bsica de los microprocesadores Intel

16/06/06

Una vez culminado con el resumen histrico de los microprocesadores Intel se posee una idea general de las caractersticas de los mismo y como evolucionaron, esto permitir ahora continuar con la descripcin de la arquitectura de los mismos. El estudio de la arquitectura de estos microprocesadores requiere la comprensin de las interfaces fsicas de los mismos, los tipos de datos que estos manejan y las instrucciones que poseen. El manejo adecuado de estos equipos slo puede alcanzarse mediante el conocimiento de su funcionamiento interno, en tal sentido el material presentado a continuacin pretende primero hacer una descripcin general de la arquitectura de los microprocesadores Intel para posteriormente estudiar de forma ms detallada sus interfaces de software y de hardware. 4.1. Arquitectura Interna del CPU Los microprocesadores modernos funcionan de forma similar a los de generaciones anteriores, buscan instrucciones de la memoria principal y operan sobre datos obtenidos de dicha memoria para generar resultados a ser almacenados en la misma memoria o ser desplegados al usuario; sin embargo, los procesadores actuales contienen internamente un gran nmero de procesadores de propsito especfico, lo que permiten al microprocesador realizar cierto nmero de operaciones de forma simultnea, en diversas etapas de la ejecucin. Esta capacidad recibe el nombre de paralelismo. Los microprocesadores ms antiguos tenan una sola unidad que controlaba la interfase del canal y que efectuaba todas las operaciones. Hasta el 8085 no exista el paralelismo propiamente dicho en los microprocesadores Intel, este procesador buscaba las instrucciones de memoria (mediante operaciones de lectura) y mientras las decodificaba y ejecutaba el sistema de memoria y los canales se mantenan ociosos. A partir de 8086 y el 8088 se aprovecha este tiempo ocioso de la memoria y el canal, buscando de forma anticipada la siguiente instruccin de memoria, mientras la actual se ejecutaba, de manera que el canal de transferencia de datos se encontraba la mayor parte del tiempo ocupado. A medida que evolucionaron las computadoras comenzaron a aparecer varias unidades internas, todas destinadas a trabajar en paralelo. Estas nuevas caractersticas permitieron realizar varias operaciones simultneas. Entre las unidades ms importantes para el 80496 Intel estn(ver Figura 13):

Figura 13. Diagrama de bloques del 80486Unidad de interfase del Canal BIU, que tiene la funcin de leer instrucciones de la memoria y de leer o escribir datos entre el microprocesador y la memoria.

Elaborado por: Ing. David Fernndez

20/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

La memoria cach conectada a la BIU, en donde se almacenan las instrucciones y los datos que se estima probable a ser utilizados. El pre-recuperador, est conectado a la salida del cach y puede contener hasta 3 instrucciones de 1 byte sin ejecutar. Unidad decodificadora de instrucciones, se ubica a la salida del pre-recuperador y su labor es identificar las instrucciones enviarlas a la unidad de control-prueba y proteccin. Unidad de control-prueba y proteccin, prueba y controla las instrucciones decodificadas por la unidad decodificadora. Unidad de punto flotante, unidad de ejecucin que realiza las operaciones con nmeros decimales. La unidad de paginacin, realiza convierte las direcciones lineales en direcciones fsicas cuando se utiliza el mecanismo de manejo de memoria virtual por paginacin. La unidad de segmentacin, convierte las direcciones de memorias lgicas(del modelo segmentado de memoria) en direcciones lineales(del modelo plano de memoria). La Unidad Aritmtica Lgica ALU, realiza todas las operaciones lgicas y las aritmticas de nmeros enteros.

En la actualidad los microprocesadores Intel poseen muchas ms unidades internas de la referidas aqu, haciendo crecer su paralelismo interno. Esta afirmacin se ve concretada en algunos de los avances tecnolgicos actuales como lo son la tecnologa Hyperthreading y la Dual-Core de Intel con las que no solamente se posee paralelismo a nivel de unidades de ejecucin sino de microprocesadores en un solo chip. Con la tecnologa Hyperthreading se logran tener dos o ms procesadores lgicas en un chip mientras que con la tecnologa Dual-Core se logran tener dos microprocesadores fsicos en un solo chip. El paralelismo puede encontrarse a nivel del chip en forma de mltiples unidades internas, en mltiples pipelines o incluso como mltiples procesadores encapsulados en el mismo chip. Tambin es posible conseguir niveles de paralelismo fuera del chip en una misma tarjeta madre, esto es, en tarjetas madres que soporten mltiples procesadores. Finalmente, se puede conseguir paralelismo a nivel de computadores completos en dos formas principales como grids (o rejillas de computadores) y como clusters (o conglomerados de computadores). Los Grids son conjuntos de computadores heterogneos u homogneos conectados en red, cuyos recursos y tiempos libres de procesamiento son utilizados por el Grid para la ejecucin de tareas especficas. En contraste, los Cluster son arreglos homogneos de computadores conectados en red, que corren un sistema operativos capaz de administrar los recursos computacionales de dicha red como si fuera un solo computador en la ejecucin de tareas especficas. Los computadores conectados a un Grid son autnomos, pudiendo conectarse y desconectarse del Grid, mientras que los computadores conectados a un Cluster son dependientes del mismo. 4.2. Modos de operacin de los microprocesadores Intel de la arquitectura IA-32 Los microprocesadores Intel ms modernos poseen cuatro modos de operacin: modo protegido, modo real, modo de administracin del sistema y modo . Estos modos de operacin determinan que instrucciones y caractersticas de la arquitectura estarn disponibles para la programacin y ejecucin. A continuacin se describen brevemente los modos de operacin de los microprocesadores Intel. Modo Protegido: este es el modo de trabajo nativo de los microprocesadores IA-32. En este modo estn disponibles todas las instrucciones y caractersticas disponible en la familia IA-32. Este es el modo de operacin recomendado para todos los programas y sistemas operativos nuevos. Ofrece un ambiente multitarea de ejecucin y un submodo especial para mantener compatibilidad con el modo real denominado modo virtual 8086. En este submodo se tiene acceso a una memoria limitada de 1MB denominada espacio de direccionamiento de modo real. Los datos y las instrucciones manejadas son de hasta 32bits y la memoria se maneja por grupos o bloques denominados segmentos de memoria. Los segmentos de memoria son de diferentes tamaos y el acceso a los mismos puede estar protegido. El microprocesador tambin puede pasar del modo protegido al modo de administracin del sistema si as se desea. Modo Real: Todos los microprocesadores Intel IA-32 inician su funcionamiento en modo real. Este modo implementa el entorno de ejecucin del procesador 8086 (tambin permite cambiar a cualquiera de los otros dos modos de operacin). En este modo existen restricciones en cuanto a los tipos de instrucciones que pueden manejarse y el espacio de direccionamiento es de 1MBytes. En este modo todos los datos e instrucciones manejadas son de 16bits. La memoria se maneja mediante segmentos de tamao fijo (hasta 64Kbytes). No existe proteccin de los segmentos e incluso se pueden solapar. Modo de administracin de sistema (System management mode-SMM): este modo implementa funciones especiales para la administracin de energa y funciones de seguridad del sistema. Este modo utiliza un modelo de memoria separado denominado RAM de manejo del sistema (System Management RAM SMRAM). Este modo es parecido al utilizado en modo real. Modo IA-32e: este es un nuevo modo de ejecucin en los microprocesadores Intel de la familia IA-32. Extiende el modelo de memoria y presenta dos sub-modos de ejecucin que se describen a continuacin. Elaborado por: Ing. David Fernndez 21/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Sub-modo de compatibilidad: es el modo de compatibilidad para el funcionamiento de 16 bits y 32 bits sin necesidad de requerir recompilar las aplicaciones en sistemas operativos de 64 bits. En este modo no funcionarn las aplicaciones diseadas para el modo virtual-8086. Los sistemas operativos de 64 bits pueden habilitar este modo por segmentos, de manera que una aplicacin de 32 bits 16 bits pueda ejecutarse sin problemas, sin afectar otros programas compilados para 64 bits. En este modo las aplicaciones de 32 bits 16 bits pueden acceder a un espacio de direcciones de 4 GB y mediante un mecanismo denominado PAE (Physical Address Extensions) pueden acceder a memoria fsica por arriba de los 4 GB. Sub-modo de 64bits: es un modo de operacin que permite a la arquitectura IA-32 ejecutar sistemas operativos de 64 bits y aplicaciones de 64 bits que accedan adems a un espacio de memoria de 64 bits. Este modo aade ocho registros de propsito general y ocho adicionales para las instrucciones SIMD. As mismo, incrementa el tamao de los registros de propsito general a 64 bits para lo que aade el prefijo REX al cdigo de operacin. Las direcciones que maneja son de 64 bits y los operandos por defecto son de 32 bits.

Todos estos modos utilizan un entorno de ejecucin comn que se describe en el siguiente apartado. 4.3. Entorno bsico de ejecucin de la familia IA-32 A cualquier programa que se ejecuta en la familia IA-32 se le asigna una serie de recursos para el manejo de su cdigo, datos e informacin de su estado de ejecucin. Al conjunto de estos recursos se les denomina de entorno bsico de ejecucin. En los prximos prrafos se explica brevemente cuales son estos recursos y que funcin cumplen (ver Figura 14).

Registros de ejecucin bsica de programas: 16 registros utilizados para la ejecucin de instrucciones de propsito general que permiten realizar la mayora de las operaciones lgicas, aritmtica de enteros y direccionamiento del espacio de memoria. Estos registros se dividen en 8 de propsito general, 6 registros segmento, un registros bandera y un registro apuntador de instrucciones. Estos registros sern estudiados ms a fondo en los siguientes apartados. Registros x87 FPU: son los registros utilizados por la unidad de punto flotante para realizar clculos numricos sobre nmeros punto flotante, enteros y BCD. Estos registros se dividen en 8 registros de 80 bits de propsito general, uno de estado, otro apuntador de instrucciones, uno apuntador de datos. Registros MMX: utilizados para realizar las operaciones SIMD. Son 8 registros de 64 bits. Registros XMM: utilizados para realizar operaciones SSE, SSE2 y SSE3. Son 8 registros de 128 bits y un registro de control de 32 bits. Pila: existen recursos adicionales para el manejo de la Pila lo que ofrece las herramientas necesarias para realizar llamadas y pase de parmetros entre sub-rutinas. La Pila se almacena en la memoria. Espacio de direccionamiento de memoria: los microprocesadores de la arquitectura IA-32 pueden direccionar un espacio de memoria lineal de 4 GB (232 bytes) y una espacio de memoria fsica de 64 GB (236 bytes).

Elaborado por: Ing. David Fernndez

22/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Figura 14. Entorno bsico de ejecucin de la familia IA-32Existen otros recursos que no pertenecen al entorno bsico de ejecucin pero que son caractersticas fundamentales de la arquitectura IA-32 y representan recursos de suma importancia para la programacin de aplicaciones y la administracin del sistema operativo. Entre estos recursos se encuentran los sealados seguidamente.

Puertos de entrada y salida (E/S): es el modelo manejado por la arquitectura para permitir transferir informacin entre el microprocesador y los dispositivos de E/S. Registros de control: se poseen 5 registros de control (CR0 al CR4) que determinan el estado de operacin del microprocesador y de las tareas en ejecucin. Registros para el manejo de la memoria: utilizados para el manejo de la memoria en modo protegido (GDTR, IDTR y LDTR). Registros de depuracin: utilizados para operaciones de depuracin (DR0 al DR7). Registros de tipo de rango de memoria: utilizados para asignar tipos de memoria a ciertas localidades de memoria (MTRRs). Registros especficos de la mquina: se utilizan para reportar caractersticas funcionales del procesador (MSRs). La mayora de estos registros no estn disponibles para las aplicaciones de usuario. Registros de verificacin de la mquina: son registros (MSR) de control, estado y reporte de errores utilizados para el manejo de errores del microprocesador. Registros contadores para la observacin del rendimiento: permiten realizar observaciones del rendimiento sobre eventos en el sistema.

Elaborado por: Ing. David Fernndez

23/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

El nuevo modo de operacin IA-32e introducido en los microprocesadores de ltima generacin de la familia IA-32 poseen un entorno de ejecucin expandido para soportar datos y operaciones de 64bits. Este entorno no ser discutido en este documento. 4.3.1. Registros de propsito general Los registros de propsito general se utilizan en la forma en la que desee el programador y se pueden direccionar como registros de 32 bits (EAX, EBX, ECX, EDX, ESP, EBP, EDI, ESI), como registros de 16 bits (AX, BX, CX, DX, SP, BP, DI, SI) y algunos como registros de 8 bits (AH, AL, BH, BL, CH, CL, DH, DL). Debe recordarse que slo los procesadores de 32 bits pueden utilizar los registros de 32 bits. Algunas de las instrucciones de los microprocesadores utilizan de forma especial estos registros, es por esta razn que se les han asignado nombres. En lenguaje ensamblador los nombres de los registros se representan por dos o tres letras como por ejemplo AX, CH, BL. A continuacin se indican los nombres de estos registros y su uso ms importante. EAX (Acumulador Acumulator): a menudo conserva los resultados de operaciones aritmticas y lgicas. Puede direccionarse como EAX, AX, AH y AL. EBX (Base): contiene frecuentemente la direccin base (desplazamiento) de los datos que hay en la memoria la direccin base de una tabla de datos a ser referenciada por la instruccin de conversin XLAT. Puede ser direccionado como EBX, BX, BH y BL. ECX (Contador Counter): este registro contiene usualmente el conteo de operaciones de desplazamiento de bits y rotaciones, para las operaciones repetidas de cadenas y para las operaciones de ciclos o bucles de programas. Puede direccionarse como ECX, CX, CH y CL. EDX (Datos Data): puede contener la parte ms significativa de un producto despus de una multiplicacin de 16 32 bits; puede contener la parte ms significativa del dividendo antes de la divisin el nmero del puerto de E/S (entrada/salida) para una instruccin de E/S. Tambin puede direccionarse como EDX, DX, DH y DL. ESP (Apuntador de Pila Stack Pointer): permite direccionar datos contenidos en una pila LIFO (ltimo en entrar primero en salir-Last In First Out). Es utilizado por las instrucciones PUSH y PULL o cuando se realizan llamadas a subrutinas con las instrucciones CALL y RET. Este registro se puede direccionar como ESP SP. EBP (Apuntador Base Base Pointer): se utiliza generalmente para apuntar a una matriz de datos ubicados en una pila de memoria. Tambin se utiliza para manejar los parmetros pasados a un procedimiento en el marco de pila del procedimiento. Este registro puede direccionar como EBP BP. EDI (ndice Destino Destiny Index): se utiliza generalmente para apuntar de forma indirecta a direcciones de memoria donde se almacenaran un conjunto de datos en cadena o arreglos. Se puede direccionar como EDI o DI. ESI (ndice Fuente Source Index): se utiliza para apuntar de forma indirecta al lugar de memoria donde se encuentran los datos de una cadena o arreglo de datos que sern copiados a otro lugar de memoria. Se puede direccionar como ESI o SI.

4.3.2. Registros especiales Existen dos registros de propsito especial en los microprocesadores Intel, el EIP y el EFLAGS que se describen a continuacin. EIP (Registro Apuntador de Instruccin-Instruction Pointer): es un registro cuyo nico propsito es apuntar a la prxima instruccin que va a ejecutar el microprocesador. Para conocer la direccin de la instruccin a ejecutar se suma la direccin que contiene EIP al inicio del segmento cdigo. Se puede direccionar como EIP(forma de 32bits) y como IP (forma de 16bits). EFLAGS (Banderas): este registro contiene una serie de bits que indican el estado en el que se encuentra el microprocesador y el programa actual despus de cada instruccin ejecutada y algunos de ellos controlan su funcionamiento. Tambin se puede direccionar como FLAGS. En la Figura 14 se ilustra el registro bandera, en la misma se indica el nombre y la posicin de cada bit en dicho registro.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ID VIP VIF AC VM RF 0 NT IOP O D I T S Z 0 A 0 P 1 C X X X X X X X S: denota bits banderas relacionados al estado de ejecucin del programa actual C: denota bits de control de operacin X: denota bits de estado del sistema Nota: los espacios en blanco son reservados para uso futuro. X S C X X S S S S S

Figura 15. Registro bandera EFLAGS

Elaborado por: Ing. David Fernndez

24/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Los bits del registro bandera se agrupan en tres categoras, bits de estado de la aplicacin (indicados con la letra S), bits de control (indicados con la letra C) y bits de estado del sistema (indicados con la letra X). Los bits del registro bandera mantiene compatibilidad hacia atrs entre los microprocesadores Intel de las familias IA-16 e IA-32, esto es, el registro bandera del 8086/8088 es compatible con el registro bandera de los microprocesadores actuales (p.e. 80486 y familia Pentium) pero los registros de los microprocesadores son mucho ms especializados y los nuevos bits que introducen no existen ni son compatible con microprocesadores antiguos. A continuacin se describen los bits del registro bandera. C (Acarreo Carry): indica si hubo acarreo o prstamo en operaciones de suma y resta respectivamente, tambin indica la ocurrencia de errores para ciertas instrucciones, como por ejemplo sobre flujo en operaciones de aritmtica sobre nmeros enteros sin signo. P (Paridad Parity): indica si el resultado de una operacin tiene paridad par. El 1 indica paridad par y el 0 indica paridad impar (recurdese que la paridad es el conteo de los unos de un nmero binario), esto aplica para el byte menos significativo del resultado. A (Medio acarreo hAlf carry): indica que hubo un acarreo o prstamo entre el tercer y el cuarto bit de un byte en operaciones de suma y resta con nmeros en representacin BCD. Instrucciones como DAA y DAS se utilizan para ajustar los valores de AL despus de haber realizado una suma o resta BDC ajustando el valor contenido en AL segn lo indique este bit. El microprocesador no utiliza de otra manera este bit. Z (Cero Zero): indica cuando el resultado de una operacin matemtica o lgica es cero. Si el resultado es cero este bit se fija en uno (1), si el resultado es distinto de cero se almacena un cero (0) en este bit. S (Signo Sing): indica si el resultado de la operacin aritmtica de suma o resta es positivo o negativo. Si S = 0 el resultado es positivo de lo contrario es negativo. Es importante resaltar que en el bit de signo copia el valor del bit ms significativo del resultado de cualquier instruccin que afecte a las banderas. T (Trampa Trap): se utiliza para habilitar las caractersticas de depuracin del microprocesador (fija el modo de ejecucin paso simple). Cuando T vale uno (1) la funcin de depuracin se encuentra habilitada, caso contrario se encuentra deshabilitada. I (Interrupcin Interrupt): controla el funcionamiento de las interrupciones enmascarables del microprocesador. Si I = 0 se deshabilita la entrada INTR y si I = 1 se habilita la entrada INTR. D (Direccin Direction): controla la seleccin de incremento o decremento de los registros DI y SI en operaciones de cadenas o arreglos. Si D = 1 hay decremento automtico en los registros mencionados, si D = 0 hay incremento automtico en estos registros. Esta bandera se fija en uno con la instruccin STD (fijar D set) y se coloca en cero con la instruccin CLD (borrar D - clear). (Sobreflujo Overflow): este bit es importante solamente en operaciones con signo de lo contrario no importa el estado de este bit. Este bit se coloca en uno si el resultado de la suma o resta aritmtica exceden la capacidad almacenamiento del microprocesador de lo contrario permanece en cero. P.e. si se suma 7FH (+127) a 01H(+1) el resultado es 80H (-128) esta es una situacin de sobreflujo si se trabaja con datos de 1 byte (8bits). IOPL (Nivel de privilegio de entrada y salida IO Privilege Level): se utiliza nicamente en el modo de operacin protegido del procesador para al espacio de direcciones de E/S. Si el nivel de privilegio actual es de mayor prioridad que el de la bandera IOPL se ejecuta la operacin de E/S, de lo contrario se produce una interrupcin que ocasiona la suspensin de la ejecucin. El nivel IOPL = 00 es el de mayor prioridad y el 11 es el de menor prioridad. NT (Tarea anidada Nested Task): se utiliza solamente para el modo protegido y permite indicar si la tarea que se ejecuta en la actualidad est anidada dentro de otra (esto sucede cuando el bit vale 1 de lo contrario la tarea actual no est anidada). RF (Reanudar ejecucin Restart Execution): se utiliza en la depuracin para ejecutar la siguiente instruccin. VM (Modo virtual Virtual Mode): esta bandera selecciona el funcionamiento de modo virtual cuando el procesador est funcionando en modo protegido, y permite la creacin de varias sesiones simuladas de modo real (MS/DOS). AC (Comprobacin de alineacin Alignment Check): cuando se coloca en uno se habilita la funcin de verificacin de alineacin de referencias o direcciones de memoria, y cuando est en cero se deshabilita la funcin de verificacin de alineacin de las direcciones de memoria. Este bit bandera slo existe en el 80486 y sus sucesores. VIF (Bandera de Interrupcin Virtual - Virtual Interrupt Flag): es una imagen virtual del bit bandera IF que se utiliza en conjunto con el bit bandera VIP VIP (Bandera de Interrupcin en Espera Virtual - Virtual Interrupt Pending Flag): cuando este bit se encuentra en uno sealiza que existe una interrupcin por atender, si no existen interrupciones pendientes se coloca en cero. ID (Bandera de identificacin Identification Flag): permite activar o desactivar las instrucciones de CPUID.

4.3.3. Registros segmentos Los registros segmentos permiten generar las direcciones de memoria para el manejo de los segmentos de memoria. Los registros segmentos funcionan de forma diferente dependiendo del modo de trabajo del microprocesador. Los registros segmentos FS y GS slo existen a partir de 80386. CS (Registro segmento de cdigo Code Segment): define la direccin de memoria a partir de la cual se 25/59

Elaborado por: Ing. David Fernndez

Arquitectura de Computadores: Electrnica Digital II

16/06/06

almacenan los programas y procedimientos que ejecuta el procesador. El CS define la direccin inicial de un segmento de 64KB en la que est alojado el cdigo a ejecutar cuando el procesador opera en modo real; si el procesador se encuentra en modo protegido CS apunta a la direccin de memoria donde se encuentra un descriptor que describe la direccin inicial del segmento de cdigo, su longitud y sus derechos de acceso. El segmento de cdigo est limitado a 64KB en los procesadores 8086-80286 y a 4GB a partir del 80386.. DS (Segmento de Datos Data Segment): define la direccin de memoria a partir de la cual se almacenan la mayora de los datos de un programa. ES (Segmento Extra Extra Segment): contiene la direccin de un segmento de extra de memoria utilizado para algunas instrucciones de cadenas. SS (Segmento de Pila Stack Segment): indica el punto donde inicia la pila. Las operaciones que trabajan con la pila utilizan al registro ESP para apuntar al tope de la misma. Tambin es posible acceder a datos dentro de la pila mediante el registro BP. FS y GS: solamente existen a partir del 80386 y su objetivo es de ofrecer a los programadores capacidad para disponer de dos segmentos adicionales de memoria para datos.

4.4. Manejo de la memoria en el microprocesador Los microprocesadores Intel manejan la memoria en dos formas diferentes. La memoria fsica es la que estos ven desde sus buses (es la que ve el fabricante de hardware) y la memoria lgica la que se utiliza a nivel de la programacin (es la que ve el programador). 4.4.1. Memoria Fsica La memoria fsica se organiza en bloques pequeos de memoria de 8 bits a los que se les denomina bancos de memoria, y el nmero de bancos de memoria depende del tamao del bus de datos del microprocesador. Los microprocesadores de 8 bits tienen un solo banco (ya que poseen un bus de datos de 8bits, por ejemplo en el 8080 la memoria es de 8 bits de ancho), los de 16 bits tienen dos bancos de memoria (por ejemplo en los procesadores 8086, 80186, 80286 es de 16 bits de ancho) y los procesadores de 32 bits tienen 4 bancos de memoria (por ejemplo en el 80386DX y 80486 es de 32 bits de ancho), en donde la memoria puede ser direccionada como bytes, palabras o palabras dobles. Hoy en da el tamao des bus de datos sigue creciendo y en consecuencia el nmero de bancos de memoria dependern de la arquitectura particular de los microprocesadores utilizados. 4.4.2 Memoria Lgica La memoria lgica es la misma para todos los microprocesadores Intel, se considera como un gran bloque de memoria organizado en bytes (ver Figura 14), con la nica distincin entre los diferentes microprocesadores que el tamao del bloque puede ser ms grande o ms pequeo. Esta es la manera como el programador ve la memoria, slo se diferencia de un procesador de otro en cuanto a la cantidad de memoria que puede direccionar. La memoria de los procesadores 8086, 80186 y 80286 es en total de 1MB (1MB = 1024KB) que va desde 00000H hasta FFFFFH, para el 80286 y el 80386SX la cantidad de memoria es de 16MB y se extiende desde 000000H hasta FFFFFFH y para los procesadores ms modernos 80386DX, 80486 y los Pentium de primera generacin la memoria direccionable es de 4GB (1GB = 1024MB) y se extiende desde la direccin 00000000H hasta la direccin FFFFFFFFH. 4.4.3. Modelos para el manejo de la memoria lgica Los microprocesadores Intel no manejan la memoria fsica de forma directa, para ello utilizan tres modelos lgicos para el manejo de la memoria el Modelo Plano, el modelo Segmentado, y el modelo Real. A continuacin se describirn estos modelos. Modelo Plano (Flat memory model) Este es el modelo bsico para el manejo de la memoria lgica de los microprocesadores Intel. En este modelo se maneja la memoria como un espacio continuo de direcciones (ver Figura 17). A este espacio de memoria se le denomina espacio lineal de direcciones. Tanto los programas como los datos y la pila estn contenidos en este espacio de memoria. Las direcciones en el modelo plano estn asociadas a localidades de memoria de 1byte y en los microprocesadores modernos en modelo plano tiene un tamao de 4Gbytes con direcciones que inician en 0 y llegan hasta 232-1 (excepto para el modo de operacin de 64bits en el que cambia un poco este modelo). Una direccin en este modelo de memoria se denomina direccin lineal. La direccin lineal puede estar relacionada con las direcciones de memoria fsica de forma directa o de forma indirecta. En la relacin directa existe una correspondencia uno a uno con las direcciones fsicas del sistema y en la relacin indirecta se traducen las direcciones lineales a la fsicas a travs de un mecanismo denominado paginacin. Modelo Segmentado (Segmented memory model) La memoria, en este modelo, aparece como bloques de direcciones independientes denominados segmentos. Estos bloques se pueden pensar como varios modelos planos de memoria independientes uno del otro, organizados de igual forma por bytes. El cdigo los datos y la pila se almacenan en segmentos de memoria distintos en este modelo. Las direcciones manejadas por este modelo para ubicar un byte dentro de un segmento se denominan direcciones lgicas. Una direccin lgica se conforma de un selector de segmento y un desplazamiento (estas direcciones tambin Elaborado por: Ing. David Fernndez 26/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

reciben el nombre de punteros lejanos, ver Figura 16). El selector de segmento identifica cual es el segmento al que se tendr acceso y el desplazamiento identifica un byte dentro del espacio de direccionamiento del segmento. La arquitectura IA-32 puede manejar hasta 16383 segmentos de diferentes tipos y tamaos, y cada segmento puede tener un tamao mximo de 232bytes.

Figura 16. Direccin lgica de memoria (Fuente Volumen 1 pag. 3-27 del manual de programacin de la arquitectura IA-32)Internamente, todos los segmentos definidos por este modelo se localizan dentro del modelo plano de memoria antes explicado. Es decir, el microprocesador posee mecanismos para convertir la direccin lgica de memoria (utilizada en el modelo segmentado) en direccin lineal (utilizada en el modelo plano). Esta traduccin es transparente para el usuario y las aplicaciones. Este modelo de memoria parece ser un poco complicado pero tiene una gran ventaja, permite que las aplicaciones desarrolladas (tanto a nivel de datos como de cdigo) sean reubicables en cualquier lugar de la memoria (relocalizacin de segmentos). Esta caractersticas es de vital importancia si se considera la gran variedad de configuraciones de computadores que pueden conseguirse en el mercado, permitiendo escribir el programa una sola vez sin importar la configuracin del sistema que lo ejecutar. Para mover un programa de una localidad de memoria a otra basta con cambiar el valor de los registros segmento que maneja el programa. La asignacin y modificacin de los valores de los registros segmentos utilizados en una aplicacin estn a cargo, por lo general, del sistema operativo. La principal razn por la que se utiliza este modelo es la seguridad que ofrece a los segmentos de los programas y del sistema operativo. Entre algunos de los beneficios de este modelo est que los segmentos no pueden solaparse y que existen derechos de acceso a los mismos. Modelo Real (Real-address mode memory model) Este es el modelo de manejo de memoria que utiliza el microprocesador 8086. En este modelo solamente se tiene acceso a 1Mbyte de memoria, es decir, las direcciones de memoria se extienden desde 0 a 2 20-1. Existe para proveer compatibilidad con los programas escritos para el 8086. El modelo real es un caso especfico del modelo segmentado, en el mismo se manejan segmentos de memoria de 64Kbytes. El problema con este modelo es que los segmentos no poseen proteccin, se pueden solapar y no existe control sobre el tamao de los mismos (son siempre del mismo tamao). En este modelo las direcciones de memoria se denominan direcciones lgicas y se calculan igual que como lo hace el modelo segmentado, mediante un selector de segmento y un desplazamiento. Estas direcciones tambin se deben traducir a direcciones del espacio lineas, el siguiente apartado explica como realizar esta conversin.

Elaborado por: Ing. David Fernndez

27/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

Figura 17. Modelos para el manejo de la memoria lgica de los microprocesadores Intel (Fuente: Volumen 1, pag. 3-9 del manual de programacin de la arquitectura IA-32)4.4.4. Clculo de las direcciones lineales en el modelo real En el modelo real la memoria se direcciona a travs de un selector de segmento y un desplazamiento, al igual que en el modelo segmentado. El selector de segmentos en este modelo viene dado por una direccin almacenada en uno de los seis registros segmentos y el desplazamiento puede estar conformado por varios componentes que se explicarn ms adelante. La direccin lineal se calcula multiplicando al registro segmento por 10H y sumndole el desplazamiento como se muestra en Figura 18.

19 0 Registro_Segmento(16b) * 10H (Direccin del inicio del segmento)

+

15

0 Desplazamiento (Direccin Efectiva)

Figura 18. Construccin de direcciones de memoria en el "Modelo Real"Por ejemplo, suponga que se posee un selector de segmento almacenado en el registro DS = 1AB0H y un desplazamiento almacenado en un registro de propsito general (AX = 1010H), la direccin lineal se calcula como sigue: Direccin Lineal = DSx10H + AX = 1AB00H + 1010H = 1BB10H Es importante resaltar que los registros segmento contienen la direccin donde inicia el segmento y el desplazamiento indica cual es el byte dentro del segmento seleccionado al que se desea acceder.

Elaborado por: Ing. David Fernndez

28/59

Arquitectura de Computadores: Electrnica Digital II

16/06/06

4.4.5. Clculo de las direcciones lineales en el modelo segmentado El selector del segmento siempre est ubicado en un registro segmento y selecciona una estructura de datos denominada descriptor almacenada en un lugar especial de la memoria. El selector contiene tres elementos que permiten seleccionar al descriptor, a continuacin se muestran las partes del selector.

Figura 19. Estructura de un selectorEl RPL es el nivel de privilegio solicitado por el usuario o la aplicacin para acceder a un segmento, este debe ser mayor o igual al nivel de privilegio del descriptor denominado DPL. El campo TI establece si el descriptor seleccionado es de la tabla de descriptores globales (TI = 0) o de la tabla de descriptores locales (TI = 1). Finalmente el ndice indica cual descriptor dentro de la tabla de descriptores es el que se ha seleccionado. Al seleccionar el descriptor, se utiliza la informacin contenida en l para identificar el inicio del segmento, su longitud y los derechos de acceso al mismo. A continuacin se muestra la estructura bsica de un descriptor.BYTE 7 5 P 3 1 L AVL D/B G Base Lm ite P DPL S TIPO BASE 31:24 DPL S TIPO BASE 15:08 LM ITE 15:08 G D/B L AVL LM ITE 19:16 BASE 23:16 BASE 07:00 LM ITE 07:00 6 4 2 0 BYTE

Si es 0 no hay com patibilidad con el m odo IA-32e, de lo contrario si hay com patibilidad Indica si el segm ento est disponible o est siendo (AVL=0) utilizado (AVL=1) Si es 0 existe com patibilidad con el m odo de instrucciones y datos de 16 bits y si es 1 la com patibilidad es con 32 bits El bit de granularidad inidica si se m ultiplica por 1 el valor del lm o por 4 KB (agregando XXXH al lm ite ite) Indica la direccin lineal en la que inicia el segm ento Establece el tam ao del segm ento Si es 0 el descriptor no se ha definido (contiene inform acin invlida) y si es 1 se ha definido Nivel de privilegio del descriptor, si el RPL>=DPL hay acceso al descriptor Indica si el segm ento es del sistem (S=1) o de a cdigo/datos Indica si el segm ento es de cdigo/datos, si crece o decrece, si se puede leer y escribir de l y si ha sido accedido por algn otro program con anterioridad a

Figura 20. Estructura de un descriptorFinalmente, para calcular la direccin lineal correspondiente a la direccin lgica en el modelo segmentado se suma la base del descriptor y el desplazamiento como se muestra en la Figura 21.

31 Selector_de_Segmento (Base obtenida del Descriptor)

0

+

31

0 Desplazamiento (Direccin Efectiva)

Figura 21. Construccin de direcciones de memoria en el "Modelo Segmentado"Por ejemplo, suponga que un descriptor posee una base=FFA10000H y un desplazamiento dado por el registro EBX=00001234H entonces la direccin lineal resultante de esta direccin lgica se calcula como sigue: Direccin lineal = Base + EBX = FFA10000H + 00001234H = FFA11234H 4.5. Manejo de los operandos y direcciones en las instrucciones de la arquitectura IA-32 En este apartado se estudiarn las caractersticas de los operandos utilizados como datos y como direcciones de memoria. El primer aspecto revisado ser relativo al tamao de los operandos, posteriormente se presentar el lugar donde se pueden almacenar los operandos y por ltimo se realizar un estudio de los operandos que pueden utilizarse Elaborado por: Ing. David Fernndez 29/59

Arquitectura de Computadores: Electrnica Digital II para crear direcciones de memoria.

16/06/06

4.5.1. Tamao de los operandos de datos o de direcciones Cada segmento de memoria en la familia IA-32 puede trabajar con tamaos diferentes de operandos, y el tamao depende del bit D del descriptor de dicho segmento. Cuando el bit D vale 0 los operandos manejados son de 16bits de 8 bits y cuando ste bit vale 1 los operandos son de 32bits de 8bits. Es importante destacar que esto es vlido cuando se trabaja con el modelo segmentado el modelo plano de memoria, el modelo real y el SMRAM trabajan con operandos de 16bits o de 8bits. En particular el tamao de los operandos utilizados para el direccionamiento de la memoria son importantes en la manera como se accede a la memoria. Cuando la opcin de operandos de 16bits se utiliza solamente se tiene acceso a desplazamientos de 64kbytes mximos lo que limita al sistema a utilizar segmentos de 64kbytes. Por otro lado, cuando se trabaja con operandos de 32bits el tamao mximo de los segmentos utilizados es de 4Gbytes. El tamao de los operandos de las instrucciones o de las direcciones se puede cambiar para