ACTIVIDAD III ARQUITECTURA DE COMPUTADORES Trabajo presentado al Ing. HAIMER GUTIERREZ UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD FACULTAD DE CIENCIAS BASICAS E INGENIERIAS INGENIERIAS DE SISTEMAS, QUINTO SEMESTRE ACACIAS 2007 ACTIVIDAD III ARQUITECTURA DE COMPUTADORES YENNY ISLENA CESPEDES BERNAL CODIGO: 40.443.529 MARIA ANGELICA SANCHEZ CARDOZO CODIGO: 30.081.565 JOSE ANTONIO ROCHA CODIGO: 86.080.624 Trabajo presentado al Ing. HAIMER GUTIERREZ UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD FACULTAD DE CIENCIAS BASICAS E INGENIERIAS INGENIERIAS DE SISTEMAS, QUINTO SEMESTRE ACACIAS 2007 INTRODUCCION De acuerdo a los componentes que conformen el computador, podemos determinar la capacidad de este, y seleccionar el que se adapte a los requerimientos deseados, con el siguiente trabajo veremos las diferentes formas de medir la capacidad de los equipos de computo y los componentes que los conforman. OBJETIVOS Conocer las diferentes formas de determinar la capacidad de los equipos. Aprender sobre los programas de prueba que permiten medir las prestaciones de los equipos de cómputo. Investigar las especificaciones del bus PCI y sus características. 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, cuál es el incremento de velocidad que el fabricante ha conseguido en dos años? Rendimiento x = Rendimiento y tiempo de ejecución y = n = 150s = 0.75 tiempo de ejecución x 200s El incremento de velocidad que ha conseguido el fabricante es de 0.75 1. Por qué se usan programas de prueba y conjunto de programas de prueba para medir las prestaciones de un computador? Mientras que para un matemático probar es poco más o menos demostrar la corrección de un programa, para un programador es básicamente convencerse de que el programa va bien, funciona correctamente, y tendrá éxito y aceptación cuando lo entregue a sus usuarios finales. El IEEE se atreve con una definición: Es el proceso de ejercitar o evaluar un sistema, manual o automáticamente, con el ánimo de verificar que satisface los requisitos especificados, o identificar discrepancias entre los resultados esperados y los que el programa devuelve. La práctica nos convence, en cambio, de que hay que usar planteamientos más duros, del tipo: Probar un programa es ejercitarlo con la peor intención a fin de encontrarle fallos. Por poner un ejemplo duro, probar un programa es equivalente a la actividad de ciertos profesores para los que examinar a un alumno consiste en poner en evidencia todo lo que no sabe. Esto es penoso cuando se aplica a personas; pero es exactamente lo que hay que hacerle a los programas. Los programas de prueba son un conjunto de programas para evaluar el rendimiento. La elección no es trivial, cada programa utilizará principalmente unos determinado tipos de instrucciones, el rendimiento dependerá de que el programa elegido sea apropiado a la máquina, esto puede ser engañoso. Habrá que elegir un conjunto equilibrado: Programas que forman una carga de trabajo con la que el usuario Espera predecir el rendimiento de la carga de trabajo real 2. Si se tienen dos implementaciones de la misma arquitectura del repertorio de instrucciones. La máquina A tiene una duración de ciclo de reloj de 10 ns y un CPI de 2.0 para un programa, y la máquina 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? T CPU A= numero de instrucciones x CPI x Tiempo del ciclo = 2 x 2.0 x 10ns = 40ns. T CPU B = numero de instrucciones x CPI x Tiempo del ciclo = 2 x 1.2 x 20ns =48ns Rendimiento A = Rendimiento B tiempo de ejecución B = n = 48ns = 1.2 tiempo de ejecución A 40ns La maquina A es 1.2 veces mas rápida que la maquina B. 3. Obtener información acerca de las especificaciones del bus PCI y productos basados en el mismo en PCI Special Interest Group. 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. A diferencia de los buses ISA, el bus PCI permite configuración dinámica de un dispositivo periférico. En el tiempo de arranque del sistema, las tarjetas PCI y el BIOS interactúan y negocian los recursos solicitados por la tarjeta PCI. Esto permite asignación de IRQs y direcciones del puerto por medio de un proceso dinámico diferente del bus ISA, donde las IRQs tienen que ser configuradas manualmente usando jumpers externos. Aparte de esto, el bus PCI proporciona una descripción detallada de todos los dispositivos PCI conectados a través del espacio de configuración PCI. La especificación PCI cubre el tamaño físico del bus, características eléctricas, cronómetro del bus y sus protocolos 4. Dibuje y explique un diagrama de tiempos para una operación de escritura en un bus PCI. 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 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) 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) 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) 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) 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) 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) 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) 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) 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) i) El maestro desactiva IRDY, haciendo que el bus vuelva a estar libre, y el dispositivo de lectura desactiva TRDY y DEVSEL. 5. Investigue cómo está organizada la memoria caché en el PENTIUM II y el PowerPC Pentium II Componentes básicos v Unidad de captación/ Decodificación. Unidad de envío/ejecución. Unidad de retiro. Funcionamiento Capta las instrucciones en memoria en el orden del programa. Cada instrucción se traduce en una o más instrucciones RISC de tamaño fijo (microoperaciones o microops). Se ejecutan las microops en un cauce superescalar fuera de orden0 Se almacenan los resultados de la ejecución de las microops en el orden del flujo original del programa. ¿CISC o RISC? La arquitectura tiene una envoltura CISC con un núcleo RISC interno. Las microops RISC pasa por una cauce de 11 etapas. Unidad de captación/decodificación Unidad de captación/decodificación Etapas de captación IFU1 – Buffer de instrucciones Capta instrucciones de la caché de instrucciones Unidad siguiente IP proporciona la dirección de la siguiente instrucción a captar o Incrementar puntero e influencia de saltos e interrupciones IFU2 – Decodificador de longitud de instrucciones Examina los bytes para determinar los límites de las instrucciones (longitud variable) Si la instrucción es de salto, pasa la dirección a la unidad de predicción dinámica de saltos. IFU3 – Alineamiento de instrucciones para decodificadores Si es preciso rota el contenido de su buffer para adaptarse a la estructura de ID1 o La primera instrucción compleja y las otras dos sencillas. o Si hay dos o más complejas, se introducen en ID1 en distintos tiempos. Etapas de decodificación ID1 – Decodificador Maneja tres instrucciones máquina en paralelo Traduce una inst. máquina de una a cuatro microps (inst RISC de 118 bits) Dispone de tres decodificadores o Uno para instrucciones complejas (de 2 a 4 microops) o Los otros dos para instrucciones sencillas (una microops) Si la instr. es de más de 4 microops se transfiere al secuenciador de instrucciones de microcódigo (MIS) o ROM de microcódigo con secuencias de microops asociadas a una instr. Máquina compleja o MIS es una unidad microprogramada ID2 – Cola de instrucciones decodificadas Encola las microops en el orden original del programa Si alguna es de salto pasa a unidad de predicción estática, que alimenta a la unidad de predicción dinámica. Asignador de registros (Register allocator RAT) Transforma las referencias a los 16 registros de la arquitectura a un conjunto de 40 registros físicos Elimina dependencias falsas provocadas por el limitado número de registros de la arquitectura Preserva las dependencias verdaderas Buffer de reordenación Buffer circular que puede contener hasta 40 microops y con 40 registros hardware. Campos de cada entrada en el buffer ROB. Estado Indica si la microops está lista para ejecutarse, si ha sido emitida o si ha terminado su ejecución Dirección de memoria Dirección de la instrucción que generó la microops Microop Operación propiamente dicha Registro alias Si la microops referencia a unos de los 16 registros, este campo redirecciona a uno de los 40 registros hardware Las microops entran en el buffer en orden Se emiten fuera de orden siempre que La unidad de ejecución este libre y los datos disponibles Unidad de envío/ejecución Unidad de envío/ejecución Estación de reserva (Reservation station - RS) Recupera microops del buffer de reordenación, las manda a ejecutar y guarda los resultados en ROB Busca en ROB microops cuyo estado indique que operandos disponibles Si la unidad de ejecución necesitada está disponible, la capta y la manda ejecutar Se pueden enviar cinco microops por ciclo Si hay más de una microop disponible para una unidad de ejecución, la RS las envía de forma secuencial desde ROB Unión RS con unidades de ejecución Puerto 0 y 1 Instrucciones con enteros (IEU), punto flotante (FPU), MMX y unidad de ejecución de saltos (JEU) Puertos 2, 3 y 4 Carga y almacenamiento en memoria JEU (Jump Execution Unit) Gestiona las predicciones de salto erróneas Si una predicción es errónea, microops tendrán que ser retiradas de las unidades de ejecución Cuando se ejecuta un salto condicional, se compara el resultado con el pronóstico realizado por el hardware de predicción Si no coinciden JEU cambia el estado de las microops siguientes al salto para eliminarlas El destino correcto se proporciona a la unidad de predicción de saltos que regenera el estadp Unidad de retiro Procesa el buffer de reordenación para entregar los resultados de la ejecución Tiene en cuenta los fallos en las predicciones de saltos Cuando una microop se ha ejecutado (sin problemas con saltos) se marca como preparada para ser retirada Cuando se retira la instrucción máquina previa, y cuando todas las microops de la instrucción se han marcado como preparadas entonces la unidad de retiro actualiza los registros físicos y quita la microop del buffer de reordenamiento. Predicción de saltos Predicción dinámica de saltos basada en la historia de las ejecuciones recientes de saltos condicionales Buffer de destino de saltos (branch target buffer – BTB) Almacena información sobre los últimos saltos condicionales Memoria asociativa de cuatro vías con 512 líneas que incluye La dirección del salto, dirección de destino y un campo de historia Funcionamiento Si aparece una inst. salto se comprueba el BTB Si existe una entrada en el buffer la unidad de inst. se guía por esa información almacenada para predecir si se toma o no el salto Si se predice el salto, la dirección destino del salto asociada con esa entrada se utiliza para precaptar la inst. destino del salto o Cuando se ejecuta el salto, se actualiza la información de historia de saltos Si la inst. no está en BTB se carga su dirección en una entrada de BTB Predicción estática de saltos Para saltos condicionales que no tienen historia en BTB Algoritmo En saltos condicionales hacia atrás (respecto a IP) Se predice que se producirá el salto BUCLES En saltos condicionales hacia adelante (respecto a IP) Se predice que no se producirá el salto En saltos condicionales no relativas a IP Si es un retorno, se predice que se producirá el salto En cualquier otro caso, no se tomará el salto PowerPC Precedentes IBM 801 RT PC RS/6000 (primer superescalar) Arquitectura RISC superescalar PowerPC 601 603 604 620 7xx (G3) 74xx (G4) 75xx (G5) Tres unidades de ejecución independientes De coma flotante De procesamiento de saltos De enteros instrucciones de enteros, carga/almacenamiento entre registros y caché y comparación de enteros Diseño superescalar de grado 3 Se pueden ejecutan 3 instrucciones simultáneamente Unidad de captación Puede precaptar de la caché hasta 8 Instrucciones al mismo tiempo Unidad de caché Soporta una caché de instrucciones y datos Responsable de suministrar instrucciones a las otras unidades y datos a los registros Lógica de arbitraje envía a la caché la dirección del acceso de mayor prioridad Funciones Toma instrucciones de la caché y las carga en una cola (8 instrucciones) Procesa el flujo de instrucciones para suministrar un flujo constante a las tres unidades de ejecución Estructura Mitad superior Actúa como buffer con instrucciones hasta que se transfieran a la mitad inferior Mitad inferior Asegura que esta unidad no se retrasa esperando inst. de la caché Esquema de envío Unidad de procesamiento de saltos La instrucción de salto situada en la zona más baja de la cola de envío se emite a esta unidad si puede aceptarla Unidad de coma flotante La instrucción de coma flotante situada en la zona más baja de la cola de envío se emite si el cauce de inst. no está lleno Esquema de envío Unidad de enteros Una instrucción de enteros se emite sólo cuando se haya filtrado hasta el extremo inferior de la cola de envío Emisión fuera de orden de instrucciones de salto y de coma flotante para Mantener llenos los cauces de coma flotante y de procesamiento de saltos Control para la correcta ejecución Si existe una dependencia el cauce correspondiente se detiene Lógica para calcular la dirección de precaptación Capta instrucciones de forma continua y secuencial hasta que un salto esté en la mitad inferior de la cola Cuando la unidad de salto procese la instrucción, puede actualizar la dirección de precaptación para que las nuevas inst. se capten de la nueva dirección 6. 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? Memoria de acceso aleatorio o RAM (Random Access Memory) es la memoria basada en semiconductores que puede ser leída y escrita por el microprocesador u otros dispositivos de hardware. El acceso a las posiciones de almacenamiento se puede realizar en cualquier orden. Los chips de memoria son pequeños rectángulos negros que suelen ir soldados en grupos a unas plaquitas con "pines" o contactos. La diferencia entre la RAM y otros tipos de memoria de almacenamiento, como los disquetes o los discos duros, es que la RAM es muchísimo más rápida, y que se borra al apagar el ordenador, no como éstos. El interior de cada chip se puede imaginar como una matriz o tabla en la cual cada celda es capaz de almacenar un bit. Por tanto, un bit se puede localizar directamente proporcionando una fila y una columna de la tabla. En realidad, la CPU identifica cada celda mediante un número, denominado dirección de memoria. A partir de una dirección se calcula cuál es la fila y columna correspondiente, con lo que ya se puede acceder a la celda deseada. El acceso se realiza en dos pasos: primero se comunica la fila y después la columna empleando los mismos terminales de conexión. Obviamente, esta técnica –denominada multiplexado– permite emplear menos terminales de conexión para acceder a la RAM, lo que optimiza la relación entre el tamaño del chip y la capacidad de almacenamiento. Realmente, la CPU no suele trabajar con bits independientes, sino más bien con agrupaciones de los mismos, en forma de palabras binarias. Esto hace que la RAM no se presente en un solo chip, sino más bien en agrupaciones de los mismos. Por ejemplo, un grupo de 8 chips, cada uno capaz de almacenas x bits, proporcionará en conjunto x Kb. La memoria no deja de ser un circuito electrónico real, y por tanto está expuesta a efectos que pueden producir errores en su contenido. En otras palabras, tras escribir una palabra en una posición de memoria es perfectamente posible que algún bit cambie de estado durante el tiempo que permanezca almacenada. Si se accede de nuevo a la memoria para leer dicha palabra se recuperará información errónea y esto puede acarrear todo tipo de consecuencias. Para ello se suelen emplear dos soluciones: la paridad y la técnica ECC (Error Correction Code). El elemento que implementa estos métodos se encuentra en el interior del PC y recibe el nombre de controlador de memoria. La paridad consiste en añadir un bit adicional a cada palabra, que hace que el número de unos sea par o impar (según se emplee la paridad par o impar). Si al leer información de la memoria el bit de paridad no está de acuerdo con el número de unos se habrá detectado un error. El sistema ECC añade un conjunto de bits a cada palabra a almacenar. La ventaja es que permite detectar errores en varios bits y además es capaz de corregir dichos errores. Estas técnicas implican añadir bits adicionales y por tanto tendrán impacto en la cantidad de memoria incorporada en cada módulo. MEMORIAS R.O.M (Read Only Memory): Se trata en este caso de chips de memoria de Solo Lectura (Read Only). Dicho de otra manera es imposible para μP escribir en una ROM y esta es la primera gran diferencia que existe con una RAM. La segunda consiste en que no son de "acceso al azar" sino de "acceso secuencial", es decir que una vez iniciada la lectura de la memoria desde una posición cualquiera debe continuarse leyendo las posiciones siguientes. Estas memorias tienen datos grabados (programas) en forma permanente y no dependen de la tensión de alimentación para mantenerlos. Consisten básicamente en una matriz de fusibles, donde aquellos que están abiertos representan un 0 (cero lógico) y los que no un 1 (uno lógico). 7. 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é? El funcionamiento es el siguiente: Para realizar una transferencia de E/S, la CPU primero ha de indicar qué canal de E/S ejecuta un determinado programa. La CPU también debe definir el área de almacenamiento temporal, establecer una prioridad y establecer las correspondientes acciones en caso de error. El programa a ejecutar está cargado en memoria principal y puede contener instrucciones propias sólo procesables por el canal de E/S. Después de terminar la operación de E/S, el canal de E/S deja el resultado en un área de memoria y a continuación genera una interrupción para indicar que ha acabado. 8. 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. La memoria virtual es un espacio de direcciones cuyo tamaño máximo está determinado por el esquema de direccionamiento del computador (es decir, por la cantidad máxima de bytes posibles de direccionar que depende de la cantidad de bits o dígitos binarios utilizados para expresar una dirección. El almacenamiento que puede ser directamente accedido por el computador (memoria principal) se denomina memoria real. El espacio de la memoria real es un conjunto de ubicaciones físicas de memoria en el cual las instrucciones y datos de programa deberán ser ubicados para su procesamiento. Los programas se refieren a los datos e instrucciones por la dirección de memoria virtual sin conocer la ubicación física de memoria real. Cuando no existe memoria virtual no hay diferenciación entre el espacio de direcciones y la memoria real; el espacio de direcciones que puede ser usado en los programas tiene idéntico tamaño al espacio de memoria real posible. Si se utiliza memoria virtual, el espacio de direcciones disponibles para los programas es aquél determinado por el tamaño de la memoria virtual implementada y no el espacio de direcciones provisto por la memoria real disponible (el espacio de la memoria virtual será mayor que el de la memoria real). La memoria virtual se llama así porque representa una imagen de memoria en lugar de una memoria física del procesador. Dado que la memoria virtual no existe como una entidad física de memoria principal, las instrucciones y datos de un programa referenciados por direcciones virtuales deben ser contenidos en alguna ubicación física de memoria para ser ejecutados. Los contenidos de la memoria virtual están divididos en porciones o secciones (páginas) de tamaño fijo. El programa está completo en la memoria virtual pero en la memoria real sólo están algunas páginas del mismo que van cambiando automáticamente durante la ejecución. A su vez, la memoria real también está dividida en secciones (bloques) de igual tamaño que las páginas. Cuando se debe ejecutar un programa, éste es traído a la memoria virtual y las instrucciones y datos del mismo son transferidos entre la memoria virtual y la real de a una sección por vez durante la ejecución del programa. Una sección será llevada a la memoria real sólo cuando es requerida. Por otro lado, una sección que está en la memoria real sólo será reescrita en la memoria virtual cuando la memoria real asignada a esa sección es requerida por otra sección del mismo o de otro programa, siempre que no se esté ejecutando y, además, si ha sido modificada. En general, se controla la actividad de las secciones de todos los programas en ejecución a fin de mantener, en lo posible, en memoria real a las secciones más activas o usadas, dejando las menos activas en la memoria virtual. El aprovechamiento de la memoria real que supone esta forma de utilización es muy superior a cualquier otra forma de asignación de memoria. El hardware de traducción de direcciones o la función interna de mapping son los mecanismos por los cuales se pueden traducir las direcciones de memoria virtual en direcciones de memoria real durante la ejecución de las instrucciones. En teoría, la asociación de las direcciones virtuales con las físicas se efectúa según lo descrito. El número de página virtual se divide en un número de página virtual (los bits superiores) y un ajuste (los bits inferiores). El número de página virtual se utiliza como un índice en la tabla de páginas para encontrar la entrada de esa página virtual. El número de marco (si existe) se determina a partir de la tabla de páginas. El número de marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para formar una dirección física que se puede enviar a la memoria. La finalidad de la tabla de páginas es asociar las páginas virtuales con los marcos. En términos matemáticos, la tabla de páginas es una función, cuyo argumento es el número de página virtual y como resultado el número del marco físico. Mediante el resultado de esta función, se puede reemplazar el campo de la página virtual de una dirección virtual por un campo de marco, lo que produce una dirección en la memoria física. Sin embargo hay que enfrentar dos aspectos fundamentales: 1. La tabla de páginas puede ser demasiado grande. 2. La asociación debe ser rápida. El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamaño de página es de 4K, un hueco de direcciones de 32 bits tiene un millón de páginas; en el caso de un hueco de direcciones de 64 bits, se tendría más información de la que uno quisiera contemplar. El segundo punto es consecuencia del hecho de que la asociación virtual - física debe hacerse en cada referencia a la memoria. Una instrucción común tiene una palabra de instrucción y también un operando de memoria. Entonces es necesario hacer una, dos o más referencias a la tabla de páginas por cada instrucción. CONCLUSIONES Los programas de prueba son un conjunto de programas para evaluar el rendimiento. La elección no es trivial, cada programa utilizará principalmente unos determinado tipos de instrucciones, el rendimiento dependerá de que el programa elegido sea apropiado a la máquina. 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. La memoria caché es una clase de memoria RAM estática (SRAM) de acceso aleatorio y alta velocidad, situada entre el CPU y la RAM; se presenta de forma temporal y automática para el usuario, que proporciona acceso rápido a los datos de uso más frecuente. La ubicación de la caché entre el microprocesador y la RAM, hace que sea suficientemente rápida para almacenar y transmitir los datos que el microprocesador necesita recibir casi instantáneamente. BIBLIOGRAFIA http://campusvirtual.uma.es/fundinfo/matdoc/teoria/doc/tema2.pdf http://www.inf.uach.cl/apuntes/apuntes_so.pdf http://reyporundia.phplibre.com.es/personal/descargas/Apuntes%20de%20Estr uctura%20de%20Computadores.pdf http://avellano.fis.usal.es/~bcurto/docencia/arquitectura/pdf_arq/tema4_2.pdf http://ortihuela.galeon.com/ram.htm http://ciam.ucol.mx/villa/docs/CCVA_M006.pdf