CAP 3: EL PAPEL DEL RENDIMIENTO CAP 4: EL COMPUTADOR SANTOS MAURICIO LONDOÑO UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA PROGRAMA INGENIERIA DE SISTEMAS ARQUITECTURA DEL PC SEMESTRE V 2007 ACTIVIDAD 3 CAP 3: EL PAPEL DEL RENDIMIENTO CAP 4: EL COMPUTADOR SANTOS MAURICIO LONDOÑO Trabajo Teórico Práctico TUTOR Haimer Gutiérrez Ing. De Sistemas UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA PROGRAMA INGENIERIA DE SISTEMAS ARQUITECTURA DEL PC SEMESTRE V 2007 ACTIVIDAD 3 Capitulo 3: El Papel Del Rendimiento 1. Si la versión de 1998 de un computador ejecuta un programa en 200 s y la versión del computador hecha en el 2000 ejecuta el mismo programa en 150 s, cual es el incremento de velocidad que el fabricante ha conseguido en dos años? Tiempo de CPU A = ciclo de reloj de CPUA Frecuencia de reloj A 200s = ciclo de reloj 100 mhz Ciclo de reloj = 200s × 100*10(6) = 20000*10(6) ciclos 150s = ciclo de reloj 100 mhz Ciclo de reloj = 150s × 100*10(6) = 15000*10(6) ciclos 2. Por qué se usan programas de prueba y conjunto de programas de prueba para medir las prestaciones de un computador? Los Programas De Pruebas Se Utilizan Con El Fin De Ensayar Los Últimos Retoques De Un Nuevo Programas O Determinar Los Requerimientos De Un Usuario 3. Si se tienen dos implementaciones de la misma arquitectura del repertorio de instrucciones. La maquina A tiene una duración de ciclo de reloj de 10 ns y un CPI de 2.0 para un programa, y la maquina B una duración de ciclo de reloj de 20 ns y un CPI de 1.2 para el mismo programa. Qué máquina es más rápida para este programa y cuánto? (Tiempo de ciclo de reloj): Unidad de tiempo, normalmente nanosegundos/ciclo. Ic (Instruction count): Número de instrucciones objeto a ejecutar. Unidad: instrucciones. CPI (Ciclos por instrucción): Número de ciclos por instrucción (ordenadas por familia de instrucciones). Unidad: ciclos/instrucción. C: Total de ciclos de reloj de ejecución de un programa. Unidad: ciclos. Tp (Tiempo CPU de ejecución de un programa): Unidad tiempo, normalmente nanosegundos: Arquitectura A: A = 10 nseg. CPIA = 2.0 ciclos. CA = IcA * CPIA = 2.0 IcA Arquitectura B: B = 20 nseg. CPIB = 1.2 ciclos. CB = IcB * CPIB = 1.2 IcB TpA = CA * TpA = 2.0 IcA * 10 = 20 IcA nseg. TpB = CB * TpB = 1.2 IcB * 20 = 24 IcB nseg. TpB > TpA, por tanto RA > RB Conclusión: La arquitectura a es un 40% más rápida que la b Capitulo 4: El Computador 1. Obtener información acerca de las especificaciones del bus PCI y productos basados en el mismo en PCI Special Interest Group. Especificaciones: Bus PCI no depende del reloj de la CPU, porque está separado de ella por el controlador del bus. emplea un conector estilo Micro Channel de 124 pines. El límite práctico en la cantidad de conectores para buses PCI es de tres. 2. Dibuje y explique un diagrama de tiempos para una operación de escritura en un bus PCI. Bus PCI El bus PCI (Peripheral Component Interconnect), Interconexión de Componente Periférico es un bus propuesto recientemente, de ancho de banda elevado, independiente del procesador. Comparado con otros buses, el PCI proporciona mejores prestaciones para E/S de alta velocidad. El estándar actual permite el uso de 64 líneas de datos a 33 MHz, para una velocidad de transferencia de 264 MB/s, ó 2.112 GB/s. El PCI ha sido diseñado para ajustarse, económicamente, a los requisitos de E/S de los sistemas actuales; se implementa con muy pocos circuitos integrados y permite que otros buses se conecten a él. Intel empezó a trabajar el PCI en 1990 pensando en sus sistemas Pentium. Muy pronto Intel cedió sus patentes al dominio público. El resultado ha sido que el PCI ha sido ampliamente adoptado y se esta incrementando su uso en las computadoras personales, estaciones de trabajo y servidores. La versión actual es PCI 2.0. El PCI esta diseñado para permitir una cierta variedad de configuraciones basadas en microprocesadores, incluyendo sistemas tanto de uno como de varios procesadores. Utiliza temporización síncrona y un esquema de arbitraje centralizado. El bus PCI puede configurarse como un bus de 32 ó 64 bits. Las 50 líneas de señal obligatorias se dividen en los grupos funcionales siguientes: · Terminales de sistema: Constituidas por las señales de reloj y reinicio. · Terminales de direcciones y datos: Incluye 32 líneas para datos y direcciones multiplexadas. Las otras líneas del grupo se utilizan para interpretar y validar las señales correspondientes a datos y direcciones. · Terminales de control de interfaz: Controlan la temporización de las transferencias y proporciona coordinación entre los que la inician y los destinatarios. · Terminales de arbitraje: Estas no son líneas compartidas. Cada maestro del PCI tiene su propio par de líneas que lo conectan directamente al arbitro del bus PCI. · Terminales para señales de error: Indican errores de paridad u otros. Además la especificación PCI define 50 señales opcionales, divididas en los siguientes grupos funcionales: · Terminales de interrupción: Para los dispositivos PCI que deben generar peticiones de servicio. Cada dispositivo PCI tiene su propia línea conectada a un controlador de interrupciones. · Terminales de soporte de cache: Para permitir memorias cache en el bus PCI asociadas a un procesador o a otro dispositivo. · Terminales de extensión a bus de 64 bits: 32 líneas multiplexadas para dirección y datos y se combinan con las líneas obligatorias de dirección y datos. Hay dos líneas que permiten que dos dispositivos PCI se pongan de acuerdo para usar los 64 bits. · Terminales de prueba (JTAG / Boundary Scan): estas líneas se ajustan al estándar IEEE 149.1 para la definición de procedimientos de prueba. Transferencia de datos en el bus PCI Toda transferencia de datos en el bus PCI es una transacción única que consta de una fase de direccionamiento y una o más fases de datos. A continuación se ilustra una operación de lectura típica; las operaciones de escritura se producen de forma análoga. La figura 24 muestra los tiempos de una operación de lectura. Todos los eventos se sincronizan en los flancos de bajada del reloj. Los dispositivos del bus interpretan las líneas del bus en los flancos de subida al comienzo del ciclo del bus. A continuación se describen los eventos significativos del diagrama: Figura 24. Operación de lectura en el PCI a) Una vez que el maestro obtiene el control del bus, debe iniciar la transacción activando FRAME. Esta línea permanece activa hasta terminar la última fase de datos. El maestro también pone la dirección de inicio en el bus y la orden de lectura en las líneas C/BE (señales de órdenes del bus y de byte activo). b) Al comienzo del pulso 2, el dispositivo del que se lee reconocerá su dirección en las líneas AD (direcciones y datos). c) El maestro libera las líneas AD. En todas las líneas de señal que pueden ser activadas por más de un dispositivo se necesita un ciclo de cambio (indicado por las dos flechas circulares) para que la liberación de las líneas de dirección permita que el bus pueda ser utilizado por el dispositivo de lectura. El maestro cambia la información de las líneas C/BE para indicar cuales líneas AD se utilizan para transferir el dato direccionado (de 1 a 4 bytes). El maestro también activa IRDY para indicar que esta preparado para recibir el primer dato. d) El dispositivo de lectura seleccionado activa DEVSEL (selector de dispositivo) para indicar que ha reconocido las direcciones y va a responder. Pone el dato solicitado en AD y activa TRDY (target ready) para indicar que hay un dato válido en el bus. e) El maestro lee el dato al principio del pulso 4 y cambia las líneas de habilitación de byte según se necesite para la próxima lectura. f) En este ejemplo, el dispositivo d lectura necesita tiempo para preparar el segundo bloque de datos para la transmisión. Por consiguiente, desactiva TRDY para indicar al maestro que no proporcionará otro dato en el próximo ciclo. En consecuencia, el maestro no lee las líneas de datos al comienzo del pulso 5 y no cambia la señal de habilitación de byte durante ese ciclo. El bloque de datos se lee al comienzo del pulso 6. g) Durante el pulso 7, el dispositivo de lectura pone el tercer dato en el bus. No obstante, en este ejemplo, el maestro todavía no esta listo para leer el dato. Para indicarlo desactiva IRDY. Esto hará que el dispositivo le lectura mantenga el tercer dato en el bus durante un pulso de reloj extra. h) El maestro sabe que el tercer dato es el último, y por eso desactiva FRAME para indicar al dispositivo de lectura que este es el último dato a transferir. Además activa IRDY para indicar que está listo para completar esa transferencia. i) El maestro desactiva IRDY, haciendo que el bus vuelva a estar libre, y el dispositivo de lectura desactiva TRDY y DEVSEL. 3. Investigue como esta organizada la memoria caché en el PENTIUM II y el PowerPC El microprocesador es el corazón del ordenador, aunque sea en el sentido metafórico del término, ya que es el que constituye la base sobre la que funciona el resto del sistema . Un buen procesador puede hacer un buen sistema aún mejor; un mal procesador puede arruinar el funcionamiento del sistema operativo . Cuando se comparaban las primeras versiones de los eternamente enemigos Macintosh e IBM PC, que por aquel entonces eran el genuino IBM PC con el procesador 8088 y el Macintosh 128K, ningún especialista en microprocesadores ponía en duda que el 68000 empleado en el Macintosh era técnicamente muy superior al 8088 utilizado en el IBM PC . No es cuestión en este momento de realizar comparaciones técnicas entre estos dos modelos, como ha quedado demostrado en muchas ocasiones un buen producto es una excelente ayuda para el márketing, pero el márketing sin dicha ayuda puede hacer triunfar al producto incluso más mediocre . Sin embargo, resulta interesante analizar, aunque sea brevemente, la trayectoria sufrida por los dos ordenadores a lo largo del tiempo hasta la actualidad . Una breve historia Durante muchos años, Apple basó el funcionamiento de sus ordenadores Macintosh exclusivamente en el procesador 68000 de Motorola . Este integrado disponía en su interior de un auténtico procesador de 32 bits, tanto en capacidad de cálculo matemático como de operaciones y direccionamiento; es decir, capacidad de memoria que puede manejar . Sin embargo, a nivel de comunicación con los demás componentes del ordenador: memoria, periféricos, pantalla, etc . , esta potencia estaba restringida a 16 bits en el bus de datos y 24 bits en el bus de direcciones, con un máximo de 16 Megabytes de memoria que debido al diseño del hardware del Macintosh se reducían realmente a la mitad: 8 Megabytes de memoria . Estas especificaciones contrastaban con su competidor más directo, el IBM PC que contenía un procesador Intel 8088 con un bus de datos de tan sólo 8 bits . Aunque podía manejar más de un Megabyte de memoria, la arquitectura interna de este procesador se diseñó para ser compatible con el 8085, un popular procesador de 8 bits para el que existía un gran número de aplicaciones, y manejaba dicha memoria en bloques de 64 Kilobytes, siendo extremadamente complicado para el programador realizar aplicaciones que sobrepasaran esta barrera . Por esta razón las aplicaciones de Macintosh durante mucho tiempo resultaron sensiblemente superiores a las equivalentes de PC . Posteriormente a la aparición de los procesadores 68000 y 8088 ( y del 8086, similar al 8088 pero con bus de datos de 16 bits y que fue empleado por muchos fabricantes de ordenadores compatibles ) cada uno de los fabricantes de procesadores, Motorola e Intel respectivamente, sacó una versión más avanzada, 68010 y 80186, que sin embargo no fue utilizada por ninguno de los fabricantes en el lanzamiento de nuevos modelos . Para ello tuvo que esperarse a la tercera generación, protagonizada por el 68020 y el 80286, que siguieron la norma de aumentar el segundo y tercer dígito respectivamente . Además de aumentar el tamaño de sus buses de datos y direcciones, el 68020 tenía ambos de 32 bits mientras que el 80286 mantenía el bus de datos de 16 bits, en ambos casos se añadieron nuevas instrucciones y formas de funcionamiento que incrementaron su potencia . Es de destacar que estos procesadores fueron los primeros en soportar realmente diversas variantes de Unix . La reñida competencia entre ambos fabricantes de integrados continuó con su cuarta generación, encarnada en el 80386 y en el 68030, que incorporaba dentro del integrado ciertos elementos que previamente habían sido externos al procesador, como una unidad de manejo de memoria y un procesador aritmético de coma flotante . Ambos procesadores ya disponían de buses de datos y direcciones de 32 bits . No obstante Intel produjo también una versión con un bus de datos de 16 bits para asegurar la compatibilidad con diseños anteriores: el 386 SX, que podía adaptarse fácilmente a los anteriores diseños para procesadores 286 . Sin embargo, no transcurrió mucho tiempo sin que apareciera la siguiente generación de procesadores . En este caso se trató del 80486 y del 68040, que junto con aumentos de velocidad ofrecían más potencia debido a su estructura interna y un conjunto ampliado de instrucciones, aunque debe indicarse que los sistemas operativos más comunes en ambos entornos: Windows 3 . 1 y Windows 95 en Intel y Mac OS con Motorola, no sabían aprovechar estas nuevas funciones . Resultaría lógico pensar que el siguiente paso de la evolución hubiera sido el 80586 y el 68050, pero no fue este el caso . Las familias de procesadores 80x86 de Intel y 680x0 de Motorola se engloban en lo que se conoce como procesadores CISC, o procesadores con conjuntos de instrucciones complejas . Se basan en ofrecer unas instrucciones altamente especializadas que exigen una gran complejidad de ejecución, consumiendo cada una de ellas varios ciclos de reloj . Diversos estudios llegaron a la conclusión de que estos diseños no eran los más óptimos, ya que dichas instrucciones se utilizaban de forma esporádica aumentando la complejidad de forma innecesaria . Una solución más óptima, según esta teoría, partiría de crear procesadores con un conjunto de instrucciones muy sencillo pero muy rápidos, implementando por software las operaciones complejas que en otros casos se incluían en el mismo procesador . Estos procesadores se conocen como RISC y ocupan un porcentaje elevado del mercado de procesadores, dominado hasta hace pocos años por la tecnología CISC . Sin abandonar su estrategia CISC, Intel necesitaba poder ofrecer al mercado un procesador avanzado que pudiera adaptarse a los requisitos de potencia que los nuevos sistemas operativos y aplicaciones le requerían . Por este motivo abandonó su sistema de numeración tradicional y presentó el procesador Pentium . Procesadores superescalares El concepto de procesador tradicional, tal como lo implementa la familia Motorola 680x0 y el Intel 80x86, sigue una estructura totalmente lineal en la ejecución de instrucciones . El integrado recupera de la memoria el código correspondiente a la instrucción, a continuación decodifica dicha instrucción y si necesita algún dato de la memoria lo recupera en el siguiente ciclo de reloj . El siguiente paso es realizar el cálculo propiamente dicho y, por último, almacena el resultado . El procesador sigue con la siguiente instrucción sólo cuando se finaliza con toda la ejecución . Al aumentar la velocidad del procesador, la memoria se convierte en un cuello de botella, tal como se comenta en el cuadro " memoria cache " y en el caso de que una instrucción requiera un dato que no se encuentre en un registro o en una cache de acceso rápido, se interrumpiría su trabajo hasta que pudiera cargarse la información solicitada . Para evitar este bloqueo, los nuevos procesadores contienen un sistema de pipeline en la cache de primer nivel que les proporciona acceso a varias instrucciones consecutivas . Cuando la instrucción en curso se bloquea, el procesador determina si alguna de las instrucciones siguientes no depende del resultado de la operación en curso . Si es así, empieza a ejecutar el nuevo cálculo mientras que espera a recibir los datos para el primero . Este procesamiento en paralelo se produce incluso cuando la primera instrucción no está bloqueada, obteniendo como resultado que el procesador está constantemente ejecutando dos, tres o cuatro instrucciones de forma simultánea . Este sistema, conocido como superescalar, mantiene las instrucciones ejecutadas en sus unidades de cálculo para asegurarse de que terminan en el orden en que se recibieron inicialmente, evitando que una salida desordenada de los resultados pueda afectar al funcionamiento de la aplicación . Por tanto si se empiezan a ejecutar simultáneamente las instrucciones 1, 2 y 3, aunque la número tres se termine antes que las otras dos, los resultados no se graban en sus registros definitivos hasta que lo haga la primera, seguido de la segunda y, por último, la tercera . Debe tenerse en cuenta que este procesamiento simultáneo de instrucciones no es posible siempre . Hace falta que el procesador disponga de una unidad de proceso del tipo necesario sin uso . Por ejemplo, si a un PowerPC 604 le llegan dos instrucciones de cálculo de números enteros, como este procesador dispone de tres unidades de proceso de este tipo puede asignarle una operación a cada unidad para su proceso en paralelo . En cambio, si las dos instrucciones consecutivas son de cálculo de bifurcación, la segunda deberá esperar ya que el PowerPC sólo dispone de una unidad de cálculo de este tipo . Arquitectura Pentium En la actualidad, bajo el nombre Pentium se engloban cuatro procesadores distintos: Pentium, Pentium Pro, Pentium con MMX y Pentium II . Al contrario que en el caso del PowerPC, la arquitectura Pentium se basa en la misma tecnología CISC de los modelos anteriores de Intel; es decir, ofrece un conjunto de instrucciones complejo que es compatible con el 80486 y anteriores . Para conseguir una ampliación de su velocidad de procesador, el Pentium original utiliza lo que se conoce como tecnología superescalar . Un procesador normal toma las instrucciones secuencialmente de memoria y las ejecuta una a una, sin pasar a la siguiente hasta no haber completado la actual . En cambio, en una arquitectura superescalar, el procesador puede ejecutar varias operaciones simultáneamente siempre que una de ellas no dependa del resultado de alguna de las anteriores . Incluso en este último caso es posible que ejecute parte de la instrucción a falta de los datos necesarios para completarla . Para poder funcionar de esta forma, el Pentium dispone de dos canales de proceso de instrucciones con dos unidades independientes de cálculo de enteros, aunque sólo tiene una unidad de cálculo de coma flotante, lo que significa que no puede ejecutar simultáneamente dos instrucciones que operen con números decimales . El Pentium MMX, el siguiente paso en la evolución, ofrece mejoras de prestaciones en diversos aspectos, como una cache doble para instrucciones y datos, un sistema de predicción de saltos que permite determinar la dirección resultante de una bifurcación del programa en ejecución y cargar la instrucciones resultantes en la cache antes de que sean necesarias . Pero las mejoras más importantes, que son las que le dan el apelativo MMX por su orientación multimedia, son la implementación de 57 nuevas instrucciones orientadas a este área y la incorporación del sistema SIMD, que permite ejecutar la misma operación sobre diversos datos simultáneamente, lo que permite ahorrar un gran número de ciclos de reloj . El Pentium Pro, tercero en la gama, expandió aún más esta arquitectura con un tercer canal de ejecución de instrucciones que le posibilita para ejecutar tres operaciones simultáneamente en el caso más óptimo . Además incorpora una memoria cache de segundo nivel integrada con el procesador que acelera el acceso a las instrucciones y datos . Un sistema de predicción de ejecución más avanzado que el incorporado en el Pentium MMX que incluye análisis del flujo de datos, predicción múltiple de saltos y ejecución especulativa le permite alcanzar rendimientos muy superiores a los del Pentium normal . El Pentium II, última incorporación hasta ahora de esta familia de procesadores, proporciona los avances propios del Pentium II junto con las extensiones multimedia del Pentium MMX . Arquitectura PowerPC El cambio de tecnología CISC a RISC se vivió con especial intensidad en el mundo Macintosh, ya que se abandonó la línea Motorola y se comenzaron a utilizar procesadores PowerPC, basados en el diseño Power de IBM originado a finales de los setenta y que esta compañía utilizaba para sus servidores con AIX . El Power original es una arquitectura basada en varios circuitos, mientras que el PowerPC es una versión reducida de la misma arquitectura para funcionar en un único circuito . Los microprocesadores PowerPC están diseñados y fabricados por la denominada PowerPC Alliance, coalición formada por IBM, Apple y Motorola . Pese a tratarse de circuitos totalmente incompatibles con la familia 680x0, los programadores de sistemas de Apple lograron crear un emulador de este último tipo de procesador para permitir que todas las aplicaciones antiguas, e incluso el Sistema Operativo, funcionaran sobre los nuevos Power Macintosh . Una buena prueba de la potencia proporcionada por esta familia de procesadores se encontraba en el hecho de que incluso tratándose de una emulación, las aplicaciones funcionaban más rápido en la nueva máquina que en la antigua, que contenía el procesador para el que supuestamente se habían escrito . El primer procesador PowerPC se introdujo en el año 94 . Se trataba del PowerPC 601, un integrado con arquitectura Superescalar que le permite ejecutar un máximo de tres instrucciones en el mismo ciclo de reloj, dispone de unidad de cálculo entero, gestor de bifurcaciones y unidad de cálculo de coma flotante, cada una de las cuales puede funcionar de forma simultánea e independiente con una instrucción . El siguiente escalón de la gama PowerPC que se ha empleado en los ordenadores Macintosh es el 603 . Además de las tres unidades de procesado del 601, incluye una unidad de carga/almacenamiento y otra de registro del sistema . Este procesador puede, al igual que el 601, ejecutar tres instrucciones simultáneamente . El procesador más potente empleado actualmente es el PowerPC 604 . Dispone de seis unidades de proceso independientes; dos de enteros de simple precisión, una de enteros de múltiple precisión, una de coma flotante, una de gestor de bifurcaciones y una de carga/almacenamiento . Aunque todavía no se encuentra disponible en ordenadores de venta al público, ya se fabrica a nivel de circuito, y Apple tiene anunciados productos de próximo lanzamiento con el PowerPC 750 . Este integrado incorpora en el propio circuito un controlador de memoria cache de segundo nivel, que en el resto de la familia debe implementarse de forma externa, que cuando se utiliza con memoria de este tipo de alta velocidad incrementa el rendimiento de las aplicaciones de forma significativa . Ete integrado se ha diseñado con técnicas de bajo consumo de energía, permitiendo su uso en ordenadores portátiles además de en equipos de sobremesa . No obstante este menor consumo no influye en el rendimiento, con un factor SPECint de 12,4 a una frecuencia de 266 MHz, la máxima velocidad a la que se fabrica actualmente, mientras un PowerPC a 350 MHz da una medida de 14,6 . Según aumenta la potencia de los procesadores, también aumenta el tamaño de la memoria cache de primer nivel que incorpora en el propio procesador y que influye decisivamente en su posterior rendimiento . Otros elementos parejos con esta evolución son el número de unidades de procesamiento que incorpora la unidad y el número de operaciones que pueden ejecutarse simultáneamente . Diseños de placa La implementación de un procesador de elevadas prestaciones no tiene sentido si el resto de la electrónica no se encuentra a la altura de éste . Es necesario que todos los circuitos de apoyo puedan adaptarse a estas velocidades . En la realidad esto no sucede así . Ningún ordenador personal tiene un bus de datos funcionando a 200 megahertzios, velocidad típica de un procesador actual . En todos los casos, la velocidad interna de la CPU se divide por tres o cuatro para obtener una velocidad efectiva de 50 ó 66 megahertzios . Una de las razones que forzaron el cambio de diseño de Apple de los conectores NuBus a PCI fue precisamente que la interfaz NuBus creaba un gran cuello de botella en sus " comunicaciones " con el procesador . Conclusión Aunque se trate del corazón del ordenador, el procesador no es la única pieza clave de este producto . Incluso como ha demostrado Apple en el cambio de los Macintosh con procesador Motorola 680x0 a PowerPC, es posible que un cambio de esta envergadura resulte transparente para el usuario . A nivel de procesador puro, el PowerPC demuestra en las medidas un mejor rendimiento en todas las operaciones . Pero más allá de eso, la arquitectura PowerPC está preparada directamente para funcionar en sistemas multiprocesador con un máximo de cuatro circuitos cooperando entre sí, mientras que en el caso del Pentium II esta organización abarca un máximo de dos circuitos . Los sistemas operativos empleados por los usuarios, ya se trate del uso de sistemas operativos Mac OS o Windows 95, no permiten aprovechar las capacidades que estos procesadores ofrecen . Arquitectura de bloques del PPC 603e Este esquema muestra la distribución interna del procesador PowerPC 603 . Los diversos elementos se definen por bloques, aunque no haya división física entre ellos dentro del integrado . - La Cola de Instrucciones mantiene hasta un máximo de seis instrucciones y es capaz de cargar dos de ellos durante un ciclo de reloj . El Alimentador Secuencial se encargar de leer constantemente instrucciones de la memoria y meterlos en esta cola para que estén disponibles de forma inmediata para el resto de los componentes . - La Unidad de Disposición se encarga de distribuirlas entre las diversas unidades de proceso ( situadas debajo en el esquema ) controlando la dependencia entre ellas y evitando interferencias entre las operaciones . - La Unidad de Proceso de Salto recibe las ordenes de bifurcación desde el Alimentador Secuencial y calcula la dirección de destino con anticipación en los saltos condicionales permitiendo que un salto de este tipo pueda ejecutarse en muchos casos sin consumir ciclos de reloj . - La Unidad de Enteros ejecuta todas las operaciones aritméticas y lógicas con números enteros, empleando un ciclo de reloj en la mayoría de ellas . Para estas operaciones cuenta con 32 registros . La Unidad de Coma Flotante contiene la circuitería necesaria para implementar las operaciones de multiplicación y suma de forma directa, tanto en simple precisión como en múltiple precisión . - En la Unidad de Carga/Almacenamiento se controla toda la transferencia de datos entre los registros internos y la memoria . Este módulo calcula la dirección real en base a los registros de la MMU y proporciona la secuenciación necesaria para la lectura o escritura de cadenas de datos . - La Unidad de Registro del Sistema realiza las operaciones relacionadas con el estado del sistema, incluyendo comparaciones lógicas de los registros del sistema y lectura y escritura en dichos registros . - Unidad de Terminación es el nombre del módulo que se encarga de controlar los procesos de las demás unidades y gestionar la transferencia de los resultados desde los registros temporales a los definitivos en el orden correcto . - Las unidades de manejo de memoria ( MMU ) se encargan de transformar la dirección de memoria virtual en la dirección física real . También controlan los privilegios de acceso para cada área . Arquitectura de bloques del Pentium Pro Para poder entender cómo funciona internamente el Pentium Pro, un sistema conocido como Ejecución Dinámica, es necesario entender cómo funcionan las diversas unidades que lo componen . - La unidad de Carga/Decodificación lee el flujo de instrucciones del programa y las decodifica convirtiéndolas en microinstrucciones . La decodificación de instrucciones se realiza de forma anticipada a su utilización . Consta del Decodificador de Instrucciones, RAT ( Tabla de Alias de Registro ) , MIS ( Secuenciador de Instrucciones de Microcódigo ) y BTB ( Bufer de destinos de salto ) . - La unidad de Disposición/Ejecución acepta las microinstrucciones decodificadas por la unidad anterior y coordina su ejecución en función de las dependencias entre unas y otras, la disponibilidad de recursos y almacena temporalmente el resultado de estas ejecución . En esta unidad se encuentran la RS ( Estación de Reserva ) , FEU ( Unidad de Ejecución de coma flotante ) , IEU ( Unidad de Ejecución de Enteros ) , JEU ( Unidad de Ejecución de Salto ) y AGU ( Unidad de Generación de Direcciones ) . - La unidad de Retirado es la encargada de coordinar el resultado de las diversas operaciones emprendidas por la unidad de Disposición/Ejecución, que pueden terminarse de una forma desordenada, y asignar ordenadamente los resultados desde su almacenamiento temporal al definitivo . En esta unidad se encuentran tres elementos: La Estación de Reserva ( RS ) , MIU ( Unidad de Interfaz de Memoria ) y RRF ( Archivo de Registro de Retiro ) . - El flujo de instrucciones De aquí se obtiene la siguiente instrucción a ejecutar en función del contenido de la memoria de predicción de salto ( BTB ) . Esta instrucción se decodifica y se convierte en una o varias instrucciones de microcódigo con la ayuda del Secuenciador de Instrucciones de Microcódigo ( MIS ) , pasando en último lugar por la tabla de alias de registro, que convierte las direcciones lógicas de registro del procesador en direcciones reales . El resultado de estas conversiones se transfiere al pool de instrucciones, pasando su control a la unidad de Disposición/Ejecución . Si tiene disponibles todos los datos necesarios para su ejecución, la Estación de Reserva ( RS ) elimina dicha instrucción de la cola y lo envía a la unidad de procesamiento que lo ejecuta . El resultado de dicha ejecución se envía nuevamente al pool de instrucciones . - La unidad de retiro es la encargada de tomar los resultados de las instrucciones válidas y transferirlos a la memoria o registro definitivo . Además retira la instrucción del pool de instrucciones y ambos procesos debe realizarlos siguiendo el flujo original del programa, es decir con las instrucciones terminando de ejecutarse en el mismo orden en que llegaron al procesador . Rendimiento: especificaciones SPEC Este cuadro muestra la velocidad de los diversos procesadores de ambas familias medidas empleando las especificaciones del consorcio SPEC . En rojo se muestra la velocidad en operaciones con enteros, a mayor longitud de la barra más rápidez, y en azul la velocidad en operaciones de coma flotante . Cada procesador se ha medido a la máxima velocidad disponible para dicho integrado . Por ejempo el Pentium original se ha medido a 200 MHz, mientras que el PowerPC 604e se ha medido a 350 MHz . Cómo se mide un procesador A la hora de dar las características de un procesador el fabricante ofrece una serie de características básicas que en dos o tres líneas permiten al entendido asimilar las principales características de funcionamiento del integrado . - 16/32/64 bits . Es uno de los principales elementos que definen a un procesador . Este valor indica el número de bits que es capaz de manejar simultáneamente el procesador . Evidentemente cuanto mayores sean los números que puede manejar un procesador, necesita menos operaciones para realizar la mayoría de los cálculos . - Bus de direcciones y de datos . Son dos elementos fundamentales en la velocidad de funcionamiento de un ordenador . - El bus de direcciones indica la memoria máxima que puede tener instalado el ordenador . - La frecuencia de reloj es otro factor fundamental en la medida de la potencia que puede obtenerse de un procesador . Este elemento genera la secuencia a la que el procesador es capaz de ejecutar instrucciones . MIPS . Es un sistema de medida estándar que permite comparar diversos procesadores de una forma objetiva . Se trata de diversos algoritmos, que se suponen típicos de un programa convencional, que se implementan en el lenguaje de cada procesador y cuya ejecución se mide - MFLOPS . Es el equivalente de MIPS pero cuando se trata de medir la velocidad de realización de operaciones con números en coma flotante . - SPEC95 . Medida de rendimiento por software . La norma SPEC95 consiste en dos grupos de medidas: CINT95 para evaluar cálculo intensivo con enteros y CFP95 para la misma medición en coma flotante . Memoria cache Los espectaculares avances que han sufrido los procesadores a nivel de velocidad, hay un elemento que súbitamente ha adquirido una gran importancia y que puede convertirse en un cuello de botella del diseño del ordenador . Se trata de la memoria . Si se considera una velocidad de reloj de 200 megahertzios el tiempo óptimo para leer de la memoria es de 5 nanosegundos, cuando estos componentes únicamente pueden llegar a 60 ó 70 nanosegundos . Como resultado, la unidad central emplea una gran cantidad de ciclos de reloj esperando a que la memoria le devuelva la información . Es posible utilizar memoria de mayor velocidad, pero su coste es tan elevado que resulta prohibitivo instalar 32 ó 64 Megabytes . En su lugar, se utiliza una cantidad mucho menor de memoria de alta velocidad, normalmente 256 ó 512 Kilobytes con una circuitería especial . Esta memoria, conocida como cache de segundo nivel se encarga de ir leyendo bloques de datos de la memoria principal con anticipación a su uso por el procesador . Cuando éste necesita un dato en particular, si está en el bloque que tiene esta memoria cache su acceso es mucho más rápido y se ahorran ciclos de espera . La circuitería adicional se encarga de leer y escribir los bloques de datos entre esta cache y la memoria principal . Normalmente esta memoria cache se situaba en la placa base, siendo por tanto independiente del mismo procesador y pudiendo ampliarse por el usuario . Sin embargo, los procesadores más recientes incorporan 256 ó 512 Kilobytes de cache en el mismo chip . Algunos procesadores incorporan una memoria de este tipo dentro del mismo procesador, conocida como cache de primer nivel, que es incluso más rápida que la de segundo nivel . En estos caso, la transferencia se produce entre la cache de primer nivel y la de segundo . El resultado final es que el acceso a la memoria por parte del procesador es inmediato . Procesadores: características técnicas PPC 603e PPC 604e PPC 750 Pentium P . MMX P . Pro Pentium II Fabricante IBM/ IBM/ IBM/ Intel Intel Intel Inte l Motorola Motorola Motorola Frecuencia máxima ( MHz ) 300 350 266 200 233 300 Instrucciones simultáneas 3 4 3 2 2 3 3 SPECint95 ( rendimiento/frecuencia ) 7,4/300 14,6/350 12,4/266 5,17/200 6,44/200 8,2/2 00 11,7/300 SPECfp95 ( rendimiento/frecuencia ) 6,1/300 9,0/350 8,4/266 4,32/200 4,37/200 6,21/20 0 8,15/300 Bus de Datos 32/64 bits 64 bits 32/64 bits 64 bits 64 bits 64 bits 64 bits Cache Nivel 1 A 16Kb/16Kb 32Kb/32Kb 32Kb/32Kb 8Kb/8Kb 16Kb/16 Kb Cache Nivel 2 integrada - - 256/512/1024 Kb 256/512 Kb 512Kb Proceso de fabricación 0,29 µ 0,25 µ 0,29 µ 0,35 µ 0,35 µ 0,35 µ 0,35 µ Unidades de ejecución 5 7 6 6 Alimentación B 2,5 V 1,8 V 2,5 V 3,3 V 2,8 V 3,3 V 2,8 V Potencia consumida 2,5 W 6 W 4,2 W ND ND 43 W . 43 W A En el caso de procesadores que poseen una cache para instrucciones y otra para datos, se dan estos valores separados por una barra . B Se da la tensión de funcionamiento interno . Por motivos de interfaz la mayoría de los procesadores se comunican al exterior a 3,3 Voltios Pentium II: Básicamente es un Pentium Pro al que se ha sacado la memoria caché de segundo nivel del chip y se ha colocado todo ello en un tarjeta de circuito impreso, conectada a la placa a través de un conector parecido al del estandar PCI, llamado Slot 1, y que se es utilizado por dos tipos de cartuchos, el S.E.C. y el S.E.P.P (el de los Celeron). También se le ha incorporado el juego de instrucciones MMX. Está optimizado para aplicaciones de 32 bits. Se comercializa en versiones que van desde los 233 hasta los 400 Mhz. Posee 32 Kbytes de caché L1 (de primer nivel) repartidos en 16Kb. para datos y los otros 16 para instrucciones. La caché L2 (segundo nivel) es de 512 Kb. y trabaja a la mitad de la frecuencia del procesador. La velocidad a la que se comunica con el bus (la placa base) sigue siendo de 66 Mhz, pero en las versiones a partir de los 333 ya pueden trabajan a 100 Mhz. Incorpora 7,5 millones de transistores. Los modelos de 0,35 µ pueden cachear hasta 512 Mb, los de 0,25 hasta 4 Gb. (menos los antiguos modelos a 333) Intel ha desarrollado la arquitectura Dual Independent Bus (Bus Dual Independiente) para resolver las limitaciones en el ancho de banda de la arquitectura de la plataforma actual de la PC. La arquitectura Dual Independent Bus (Bus Dual Independiente) fue implementada por primera vez en el procesador Pentium Pro y tendrá disponibilidad más amplia con el procesador Pentium II. Intel creó la arquitectura del bus dual independiente para ayudar al ancho de banda del bus del procesador. Al tener dos buses independientes el procesador Pentium II está habilitado para acceder datos desde cualesquiera de sus buses simultáneamente y en paralelo, en lugar de hacerlo en forma sencilla y secuencial como ocurre en un sistema de bus simple. Dos buses conforman la arquitectura Dual Independent Bus (Bus Dual Independiente): el "bus del caché L2" y el "bus del sistema" entre el procesador y la memoria principal. El procesador Pentium II puede utilizar simultáneamente los dos buses. La arquitectura Dual Independent Bus (Bus Dual Independiente) permite al caché L2 del procesador Pentium II de 266MHz, por ejemplo, operar al doble de velocidad del caché L2 de los procesadores Pentium. Al aumentar la frecuencia de los procesadores Pentium II futuros, también lo hará la velocidad del caché L2. El bus del sistema de procesamiento por canalización permite transacciones múltiples simultáneas (en lugar de transacciones únicas secuenciales), acelerando el flujo de la información dentro del sistema y elevando el desempeño total. Conjuntamente estas mejoras en la arquitectura Dual Independent Bus (Bus Dual Independiente) brindan hasta tres veces el desempeño del ancho de banda sobre un procesador de arquitectura de bus sencillo. Además, la arquitectura Dual Independent Bus (Bus Dual Independiente) soporta la evolución del bus de memoria del sistema actual de 66 MHz a velocidades más elevadas en el futuro. Esta tecnología de bus de alto ancho de banda está diseñada para trabajar concertadamente con el poder de procesamiento de alto desempeño del procesador Pentium II. PowerPC: La potencia de la arquitectura PowerPC se basa en dos pilares fundamentales: por un lado ofrece un rendimiento superior frente al Pentium, dado que las instrucciones RISC son más cortas y se pueden ejecutar en un menor número de ciclos de reloj ( en el caso del PowerPC esta cifra es de hasta tres instrucciones por ciclo de reloj, mientras que en el caso del Pentium, el máximo es de dos instrucciones por ciclo de reloj, siempre y cuando no exista dependencias de resultados entre ambas instrucciones ) . Por otra parte, al tratarse de una más o menos reciente tecnología, los procesadores PowerPC han sido diseñados desde el principio para ser escalables (una de los puntos que han permitido el lanzamiento de tres generaciones del procesador en un corto periodo de tiempo); mientras que Intel aún tardará en lanzar el siguiente procesador al Pentium. En el caso del PowerPC 604 el direccionamiento de memoria es de 32 bits, proporcionando direccionamiento lógico para datos enteros de 8, 16 y 32 bits, y para datos en coma flotante de 32 y 64 bits (precisión sencilla y doble precisión). El bus de datos externo es de 64 bits, y el bus de direcciones de 32 bits. En el aspecto práctico de ejecución de aplicaciones, el PowerPC 604 es capaza de ejecutar hasta un máximo de seis instrucciones por cada ciclo de reloj (entre las que se pueden incluirse tres instrucciones de enteros); para ello dispone de seis unidades independientes de ejecución. La memoria caché interna (tanto de instrucciones como de datos) ha sido otro de los aspectos mejorados en esta versión del procesador, al disponer de 16 KB de memoria cache asociativa de cuatro vías. 4. Por qué las RAM han sido tradicionalmente organizadas en sólo un bit por chip mientras que las ROM están normalmente organizadas en múltiples bits por chip? Organización interna de los chips de memoria: Una celda de memoria es capaz de almacenar un bit de información. Por lo general, varias celdas se organizan en forma de arreglo. Las memorias semiconductoras pueden dividirse en: de tipo bipolar y de MOS(Metal Oxide Semiconductor – semiconductor de óxido metal). Sin embargo, debe observarse que éstas no son de ninguna manera las únicas posibilidades. Existen muchas otras configuraciones de celdas que representan distintos equilibrios entre varios diseños. Memoria de acceso aleatorio o RAM: Es la memoria basada en semiconductores que puede ser leída o escrita por el microprocesador u otros dispositivos de hardware. Es un acrónimo del inglés Random Access Memory, el cual es bastante inadecuado puesto a que todas las pastillas de memoria son accesibles en forma aleatoria, pero el término ya se ha arraigado. El acceso a posiciones de almacenamiento se puede realizar en cualquier orden. Actualmente la memoria RAM para computadoras personales se suele fabricar en módulos inestables llamados SIMM. SIMM (Single In-line Memory Module): Consta de una pequeña placa de circuito impreso con varios chips de memoria integrados. Los SIMM están diseñados de modo que se puedan insertar fácilmente en la placa base de la computadora, y generalmente se utilizan para aumentar la cantidad de memoria RAM. Se fabrican con diferentes capacidades (4Mb, 8Mb, 16Mb, etc.) y con diferentes velocidades de acceso. Hoy en día su uso es muy frecuente debido a que ocupan menos espacio y son más manejables y compactos que los tradicionales chips de memoria. Aparecen en dos formatos de 30 contactos los cuales manejan 8 bits cada vez, miden unos 8.5 cm ó de 72 contactos que manejan 32 bits y tienen un largo de 10,5 cm. 5. En casi todos los sistemas que tienen módulos de DMA, el acceso del módulo de DMA a memoria principal tiene más prioridad que el acceso de la CPU a memoria principal. Por qué? Algunos dispositivos de entrada/salida envían datos a la memoria más rápido de lo que el microprocesador puede manejar. El controlador de DMA (Direct Memory Access) es un circuito integrado dedicado que puede enviar y recibir datos más rápido que el microprocesador. Luego, dispositivos como discos ópticos y magnéticos utilizan este integrado para acceder a la memoria del sistema. El controlador de DMA (Direct Memory Access) toma prestado los buses de datos, de direcciones y de control del sistema y envia un número programado de bytes desde un dispositivo de entrada/salida hasta la memoria. El "8237 DMA controller" es el nombre del circuito integrado que utilizan los PCs para esta función. El acceso directo a memoria (DMA, del inglés Direct Memory Access) permite a cierto tipo de componentes de ordenador acceder a la memoria del sistema para leer o escribir independientemente de la CPU principal. Muchos sistemas hardware utilizan DMA, incluyendo controladores de unidades de disco, tarjetas gráficas y tarjetas de sonido. DMA es una característica esencial en todos los ordenadores modernos, ya que permite a dispositivos de diferentes velocidades comunicarse sin someter a la CPU a una carga masiva de interrupciones. Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un dispositivo a otro. En lugar de que la CPU inicie la transferencia, la transferencia se lleva a cabo por el controlador DMA. Un ejemplo típico es mover un bloque de memoria desde una memoria externa a una interna más rápida. Tal operación no ocupa el procesador y como resultado puede ser planificado para efectuar otras tareas. Las transferencias DMA son esenciales para aumentar el rendimiento de aplicaciones que requieran muchos recursos. Cabe destacar que aunque no se necesite a la CPU para la transacción de datos, sí que se necesita el bus del sistema (tanto bus de datos como bus de direcciones), por lo que existen diferentes estrategias para regular su uso, permitiendo así que no quede totalmente acaparado por el controlador DMA. 6. Indique las razones por las que el tamaño de página en un sistema de memoria virtual no debe ser ni muy grande ni muy pequeño. En la paginación, se debe cuidar el tamaño de las páginas, ya que si éstas son muy pequeñas el control por parte del sistema operativo para saber cuáles están en RAM y cuales en disco, sus direcciones reales, etc.; crece y provoca mucha `sobrecarga' (overhead). Por otro lado, si las páginas son muy grandes, el overhead disminuye pero entonces puede ocurrir que se desperdicie memoria en procesos pequeños. Debe haber un equilibrio. Uno de los aspectos más importantes de la paginación, así como de cualquier esquema de memoria virtual, es la forma de traducir una dirección virtual a dirección real. Para explicarlo.