ANÁLISIS TLB CURSO

Tamaño: px
Comenzar la demostración a partir de la página:

Download "ANÁLISIS TLB CURSO 2008 2009"

Transcripción

1 INGENIERÍA INFORMÁTICA PROYECTO FINAL DE CARRERA ANÁLISIS TLB CURSO Autora: Mónica Larruy Carrete Tutor: Carlos Molina Clemente

2 ÍNDICE 1. ABSTRACT PROYECTO REALIZADO INTRODUCCIÓN SEGMENTACIÓN DE CAUCE Y PROCESADORES SEGMENTADOS Conceptos teóricos Notas históricas Microprocesadores segmentados MICROPROCESADORES SUPERESCALARES LA MEMORIA Gestión de la memoria Requisitos de la gestión de memoria Memoria principal o real Asignación contigua Particiones estáticas Particiones dinámicas Asignación no contigua Paginación simple Fundamentos Paginación Tamaño de la página Implementación de la tabla de páginas (TP) Segmentación simple Traducción de direcciones segmentadas Protección Fragmentación Paginación vs Segmentación Fragmentación ) Fragmentación interna (paginación) ) Fragmentación externa (segmentación) Ejemplo de traducción de dirección lógica a física

3 Paginación Segmentación Comparativa general Paginación: Ventajas e Inconvenientes Ventajas Inconvenientes Segmentación: Ventajas e Inconvenientes Ventajas Inconvenientes Memoria virtual Objetivos de la memoria virtual Paginación Traducción de direcciones Tratamiento del fallo de página Segmentación Traducción de direcciones Características de la paginación y la segmentación Paginación y segmentación combinadas Ventajas Inconvenientes Técnicas de gestión de memoria TLB (Translation Lookaside Buffer) Introducción Soporte hardware a las tablas de páginas (TP) Registros dedicados Registros asociativos (TLB) Funcionamiento Diseño Acceso Reemplazo Gestión de los fallos de página y del TLB TLB gestionado por software Indexación TLB Tamaño de página

4 4.10. Entrada TLB Valores típicos de parámetros para un TLB Integración de la memoria virtual, los TLBs y las cachés IMPLEMENTACIONES Introducción VAX 11/ MIPS R Gestión de los fallos Intel Intel I Familia Pentium Esquema Paginación Segmentación Funcionamiento del hardware de paginación Registros de control usados para la paginación Registros de test TR TR Registros Acceso TLB Resumen TLB en procesadores Pentium Pentinum Pro Introducción Características Core 2 Duo Caché TLB Segundo Nivel Caché IBM Power AMD K AMD Athlon: K Fase de búsqueda de instrucción

5 Instrucciones Caché Datos Caché Introducción TLB AMD K10 Barcelona 65nm AMD K10 (AMD Phenom) HERRAMIENTAS UTILIZADAS SimpleScalar Funcionamiento Características Modalidades de simulación CACTI Introducción Funcionamiento ESTUDIO ESTÁTICO CON CACTI Introducción Resultados extraídos Modificaciones CACTI Independizar resultados Eliminar restricciones de tamaño del TLB Modificar mínimo de escala de integración Parámetros y valores estudiados Estudio del grado de asociatividad Tiempo de acceso Área Consumo lectura Consumo escritura Comparativa: Consumo lectura vs consumo escritura Estudio del tamaño de línea Tiempo de acceso Área Consumo lectura Consumo escritura

6 Comparativa: consumo lectura vs consumo escritura Escala de integración Tiempo de acceso Área Consumo lectura Consumo escritura Comparativa: consumo lectura vs consumo escritura Puertos lectura y escritura Tiempo de acceso Área Consumo: lectura y escritura Evolución consumo puertos lectura Evolución consumo puertos escritura Comparativa: consumo lectura vs consumo escritura ESTUDIO DINÁMICO CON SIMPLESCALAR Introducción Llamadas al sistema Ejecución dinámica Predicción de saltos Jerarquía memoria El Pipeline Etapa fetch Etapa dispatch Etapa issue Etapa execute Etapa writeback Etapa commit Cargas de trabajo (Benchmarks SPEC2000) Entorno y diseño Arquitectura de simulación Modificaciones SimpleScalar Configuración simulador Análisis estudio dinámico con SimpleScalar mediante SPECs Gráficas

7 bzip IPC Miss_rate Tiempo de acceso gcc IPC Miss_rate Tiempo de acceso gzip IPC Miss_rate Tiempo de acceso mcf IPC Miss_rate Tiempo de acceso vortex IPC Miss_rate Tiempo de acceso vpr IPC Miss_rate Tiempo de acceso art IPC Miss_rate Tiempo de acceso equake IPC Miss_rate Tiempo de acceso mesa IPC

8 Miss_rate Tiempo de acceso Conclusiones estudio dinámico CRONOGRAMA TEMPORAL (diagrama de Gantt) CONCLUSIONES RECURSOS UTILIZADOS Bibliografía Páginas webs Gestión de la memoria Paginación, segmentación Arquitectura superescalar TLB Implementaciones reales CACTI SimpleScalar Instalación Software Hardware ANEXO

9 ÍNDICE FIGURAS Figura 1: Evolución de las instrucciones a través de las diferentes etapas de un microprocesador segmentado Figura 2: Evolución de las instrucciones a través de las diferentes etapas de un microprocesador superescalar con dos trayectos segmentados de seis etapas cada uno Figura 3: Microarquitectura para un procesador segmentado capaz de procesar dos instrucciones por ciclo Figura 4: Microarquitectura más usual en procesadores superescalares Figura 5: Jerarquía usual de memoria Figura 6: Caché y memoria principal Figura 7: Esquema paginación Figura 8: Estructura dirección lógica Figura 9: Ejemplo de traducción de direcciones mediante paginación Figura 10: Traducción de direcciones mediante segmentación Figura 11: Esquema protección en segmentación Figura 12: Fragmentación interna Figura 13: Fragmentación externa Figura 14: Ejemplo de traducción de dirección lógica a física mediante paginación Figura 15: Ejemplo de traducción de dirección lógica a física mediante segmentación Figura 16: Formato dirección virtual en memoria virtual basada en paginación Figura 17: Entrada de la TP en memoria virtual basada en paginación Figura 18: Traducción de direcciones mediante paginación en memoria virtual Figura 19: Formato dirección virtual en memoria virtual basada en segmentación Figura 20: Entrada de la TS en memoria virtual basada en segmentación Figura 21: Traducción de direcciones mediante segmentación en memoria virtual Figura 22: Traducción de direcciones en un sistema con paginación y segmentación en memoria virtual Figura 23: Formato de la etiqueta de la entrada del TLB Figura 24: Uso del TLB Figura 25: Funcionamiento de la paginación con TLB Figura 26: Búsqueda directa y asociativa en entradas de la tabla de páginas Figura 27: Traducción con TLB y uso de caché Figura 28: TLB del VAX 11/

10 Figura 29: TLB del MIPS R Figura 30: Uso TLB en la DECStation Figura 31: Diagrama de bloques del procesador Pentium Figura 32: Registros de control para la paginación en el procesador Pentium Figura 33: Registros TLB Figura 34: Resumen de las características del PowerPC Figura 35: Diagrama de bloques del microprocesador K7 de AMD, con su sistema de decodificación en paralelo y sus dos cauces de ejecución (uno para enteros y otro para números de coma flotante) Figura 36: Diagrama de bloques del procesador superescalar Athlon de AMD Figura 37: Captura con RMMA (RightMark Memory Analyzer) de las características del TLB en un AMD K Figura 38: Modalidades de simulación integradas en SimpleScalar Figura 39: Estructura caché usada en CACTI Figura 40: Tiempo acceso en función del grado de asociatividad Figura 41: Área en función del grado de asociatividad Figura 42: Consumo lectura en función del grado de asociatividad Figura 43: Consumo escritura en función del grado de asociatividad Figura 44: Comparativa consumo en función del grado de asociatividad Figura 45: Tiempo de acceso en función del tamaño de línea Figura 46: Área en función del tamaño de línea Figura 47: Consumo lectura en función del tamaño de línea Figura 48: Consumo escritura en función del tamaño de línea Figura 49: Comparativa consumo en función del tamaño de línea Figura 50: Tiempo de acceso en función de la escala de integración Figura 51: Área en función de la escala de integración Figura 52: Consumo lectura en función de la escala de integración Figura 53: Consumo escritura en función de la escala de integración Figura 54: Comparativa consumo en función de la escala de integración Figura 55: Tiempo de acceso en función del número de puertos de lectura y escritura Figura 56: Área en función del número de puertos de lectura y escritura Figura 57: Consumo de lectura y escritura en función del número de puertos Figura 58: Evolución del consumo de los puertos de lectura Figura 59: Evolución del consumo de los puertos de escritura

11 Figura 60: Comparativa consumo lectura y consumo escritura Figura 61: Módulos que forman el simulador sim outorder Figura 62: bucle principal del simulador sim outorder Figura 63: Espacio de memoria de SimpleScalar basado en la arquitectura PISA Figura 64: Pipeline del procesador sim outorder del SimpleScalar Figura 65: Comparativa IPC SPECINT bzip con y sin TLB L Figura 66: Miss_rate SPECINT bzip para TLB sólo con L Figura 67: Miss_rate SPECINT bzip para TLB con L1 y L Figura 68: Comparativa miss_rate SPECINT bzip con y sin TLB L Figura 69: Comparativa tiempo de acceso SPECINT bzip con y sin TLB L Figura 70: Comparativa IPC SPECINT gcc con y sin TLB L Figura 71: Miss_rate SPECINT gcc para TLB sólo con L Figura 72: Miss_rate SPECINT gcc para TLB con L1 y L Figura 73: Comparativa miss_rate SPECINT gcc con y sin TLB L Figura 74: Comparativa tiempo de acceso SPECINT gcc con y sin TLB L Figura 75: Comparativa IPC SPECINT gzip con y sin TLB L Figura 76: Miss_rate SPECINT gzip para TLB sólo con L Figura 77: Miss_rate SPECINT gzip para TLB con L1 y L Figura 78: Comparativa miss_rate SPECINT gzip con y sin TLB L Figura 79: Comparativa tiempo de acceso SPECINT gzip con y sin TLB L Figura 80: Comparativa IPC SPECINT mcf con y sin TLB L Figura 81: Miss_rate SPECINT mcf para TLB sólo con L Figura 82: Miss_rate SPECINT mcf para TLB con L1 y L Figura 83: Comparativa miss_rate SPECINT mcf con y sin TLB L Figura 84: Comparativa tiempo de acceso SPECINT mcf con y sin TLB L Figura 85: Comparativa IPC SPECINT vortex con y sin TLB L Figura 86: Miss_rate SPECINT vortex para TLB sólo con L Figura 87: Miss_rate SPECINT vortex para TLB con L1 y L Figura 88: Comparativa miss_rate SPECINT vortex con y sin TLB L Figura 89: Comparativa tiempo de acceso SPECINT vortex con y sin TLB L Figura 90: Comparativa IPC SPECINT vpr con y sin TLB L Figura 91: Miss_rate SPECINT vpr para TLB sólo con L Figura 92: Miss_rate SPECINT vpr para TLB con L1 y L Figura 93: Comparativa miss_rate SPECINT vpr con y sin TLB L

12 Figura 94: Comparativa tiempo de acceso SPECINT vpr con y sin TLB L Figura 95: Comparativa IPC SPECFP art con y sin TLB L Figura 96: Miss_rate SPECFP art para TLB sólo con L Figura 97: Miss_rate SPECFP art para TLB con L1 y L Figura 98: Comparativa miss_rate SPECFP art con y sin TLB L Figura 99: Comparativa tiempo de acceso SPECFP art con y sin TLB L Figura 100: Comparativa IPC SPECFP equake con y sin TLB L Figura 101: Miss_rate SPECFP equake para TLB sólo con L Figura 102: Miss_rate SPECFP equake para TLB con L1 y L Figura 103: Comparativa miss_rate SPECFP equake con y sin TLB L Figura 104: Comparativa tiempo de acceso SPECFP equake con y sin TLB L Figura 105: Comparativa IPC SPECFP mesa con y sin TLB L Figura 106: Miss_rate SPECFP mesa para TLB sólo con L Figura 107: Miss_rate SPECFP mesa para TLB con L1 y L Figura 108: Comparativa miss_rate SPECFP mesa con y sin TLB L Figura 109: Comparativa tiempo de acceso SPECFP mesa con y sin TLB L Figura 110: Cronograma temporal (diagrama de Gantt) con las diferentes fases en la realización del proyecto Figura 111: Argumentos del simulador sim outorder

13 ÍNDICE TABLAS Tabla 1: Ejemplos de tamaños de páginas Tabla 2: Posibles implementaciones de la TP Tabla 3: Comparativa entre paginación y segmentación Tabla 4: Características de la paginación y la segmentación Tabla 5: Resumen de las técnicas de gestión de memoria Tabla 6: Ejemplo de entradas del TLB Tabla 7: Valores típicos de parámetros para TLB Tabla 8: Posibles sucesos entre memoria virtual, caché y TLB...61 Tabla 9: Valores de los bits del registro TR6 de Pentium Tabla 10: Resumen características Intel Pentium Pro Tabla 11: Comparativa de la capacidad TLB entre AMD K8 y AMD K Tabla 12: Benchmarks SPEC2000 de aritmética de enteros Tabla 13: Benchmarks SPEC2000 de punto flotante Tabla 14: Valores comunes empleados para la simulación del TLB con y sin L Tabla 15: Valor de los parámetros número de líneas, tamaño de página y asociatividad en función del tamaño del TLB Tabla 16: Configuración TLB (L1 y L2) de 384 bytes Tabla 17: Configuración TLB (L1 y L2) de 768 bytes Tabla 18: Configuración TLB (L1 y L2) de 1536 bytes Tabla 19: Configuración TLB (L1 y L2) de 3072 bytes Tabla 20: Configuración TLB (L1 y L2) de 6144 bytes Tabla 21: Valores de bzip IPC en función del TLB Tabla 22: Valores miss_rate bzip para TLB con L1 y L Tabla 23: Valores tiempo acceso SPECINT bzip en función del TLB Tabla 24: Valores IPC de gcc en función del TLB Tabla 25: Valores miss_rate gcc para TLB sólo con L Tabla 26: Valores miss_rate gcc para TLB sólo con L1 y L Tabla 27: Valores tiempo acceso SPECINT gcc en función del TLB Tabla 28: Valores IPC de gzip en función del TLB Tabla 29: Valores miss_rate gzip para TLB sólo con L Tabla 30: Valores miss_rate gzip para TLB sólo con L Tabla 31: Valores tiempo acceso SPECINT gzip en función del TLB

14 Tabla 32: Valores IPC de mcf en función del TLB Tabla 33: Valores miss_rate mcf para TLB sólo con L Tabla 33: Valores miss_rate mcf para TLB sólo con L1 y L Tabla 35: Valores tiempo acceso SPECINT mcf en función del TLB Tabla 36: Valores IPC de vortex en función del TLB Tabla 37: Valores miss_rate vortex para TLB sólo con L Tabla 38: Valores miss_rate vortex para TLB con L1 y L Tabla 39: Valores tiempo acceso SPECINT vortex en función del TLB Tabla 40: Valores IPC de vpr en función del TLB Tabla 41: Valores miss_rate vpr para TLB sólo con L1.152 Tabla 42: Valores miss_rate vpr para TLB con L1 y L Tabla 43: Valores tiempo acceso SPECINT vpr en función del TLB Tabla 44: Valores IPC de art en función del TLB Tabla 45: Valores miss_rate art para TLB sólo con L Tabla 46: Valores miss_rate art para TLB con L1 y L Tabla 47: Valores tiempo acceso SPECFP art en función del TLB Tabla 48: Valores IPC de equake en función del TLB Tabla 49: Valores miss_rate equake para TLB sólo con L Tabla 50: Valores miss_rate equake para TLB con L1 y L Tabla 51: Valores tiempo acceso SPECFP equake en función del TLB Tabla 52: Valores IPC de mesa en función del TLB Tabla 53: Valores miss_rate mesa para TLB sólo con L Tabla 54: Valores miss_rate mesa para TLB con L1 y L Tabla 55: Valores tiempo acceso SPECFP mesa en función del TLB

15 1. ABSTRACT El buffer de traducción anticipada (TLB) es la unidad funcional responsable de retener las traducciones más eficientes (funcionando como una caché cuyos datos son direcciones físicas, y si se acierta en el acceso a la misma, la traducción tiene lugar en un solo ciclo). Éste es un elemento importante en la jerarquía de memoria en la que oculta la sobrecarga de mantener memoria virtual. Sin embargo, ciertas tendencias en diseño de ordenadores están aumentando la demanda en el TLB. El alcance de los actuales TLBs no es suficiente para apoyar dicha demanda, conllevando así a una inaceptable fracción del tiempo total de ejecución a tratar fallos de TLB. El tiempo de ciclo y el área prohíben la solución por fuerza bruta; escalar el tamaño del TLB. Así pues, las simulaciones realizadas en este proyecto tienen como objetivo el estudio de la eficacia del nivel dos (L2) de TLBs como medio para alcanzar el aumento general de TLB. El buffer de traducció anticipada (TLB) és la unitat funcional responsable de retenir les traduccions més eficients (funcionant com una caché on les seves dades són adreces físiques, i si s encerta en l accés a la mateixa, la traducció té lloc en un únic cicle). Aquest és un element important en la jerarquia de memòria en la que s oculta la sobrecàrrega de mantenir memòria virtual. Tanmateix, certes tendències en disseny d ordinadors estan augmentant la demanda en el TLB. L abast dels actuals TLBs no és prou com per pujar aquesta demanda, comportant així a una inacceptable fracció del temps total d execució a tractar fallades de TLB. El temps de cicle i l àrea prohibeixen la solució per força bruta; escalar la mida del TLB. Així doncs, les simulacions realitzades en aquest projecte tenen com objectiu l estudi de l eficàcia del nivell dos (L2) de TLBs com mitjà per assolir l augment general del TLB. The translation lookaside buffer is the functional unit responsible for retaining the translations more efficient (functioning as a cache for which data are physical addresses, and if it succeeds in access, translation takes place in a single cycle). This is a key component of the memory hierarchy in that it hides the overhead of maintaining virtual memory. However, certain trends in computer design are increasing the demand on the TLB. The reach of current TLBs is not sufficient to support this demand, the consequence is that an unacceptable fraction of total execution time will be spent servicing TLB misses. Cycle time and area constraints prohibit the brute force solution; scale the size of the TLB. Thus, the simulations in this project are performed to study the effectiveness of level two (L2) TLBs as a means of increasing overall TLB research. 16

16 2. PROYECTO REALIZADO El mecanismo de traducción de direcciones en la paginación es bastante lento debido a que debe realizar dos accesos a memoria, uno al directorio y otro a la tabla de páginas para localizar la página. Además, requiere de un tercero para efectuar la lectura o escrituras precisas. Para acelerar el proceso de traducción, se introdujo dentro del propio chip una pequeña memoria caché ultrarrápida, denominada Translation Lookaside Buffer (TLB). Éste se encarga de almacenar la traducción de las direcciones virtuales a físicas, correspondientes a las últimas páginas que se han manejado. Con la paginación en marcha, la CPU consulta al TLB en cada acceso. Si la página referenciada se encuentra en ella, obtiene la dirección física de forma inmediata. Pero si no la encuentra, el mecanismo de paginación accede al directorio y a continuación a la tabla de páginas adecuada, cargando así el valor de la dirección física hallada en el TLB. A continuación, la CPU volverá a buscar en el TLB para efectuar el acceso. Para conseguir reducir el número de fallos en el acceso al TLB, y conseguir así una mejora cuantificable en esta caché, una opción pasaría por la implantación de un TLB de segundo nivel. De esta forma, se pretende que en el caso de acceder al de primer nivel y no encontrar la dirección deseada no se tenga que recurrir a la generación inmediata de una entrada en la tabla de paginación, con la intención de mapear la dirección virtual que faltaba, corregir así la dirección física, y reiniciar el programa. Sino que en su lugar, pasaría a consultar al TLB situado en el nivel inmediatamente superior (L2). Así pues, en caso de fallo en el primer nivel la responsabilidad pasaría a recaer sobre L2, ya que se espera de él que devuelva la dirección solicitada, aunque evidentemente ello sólo ocurrirá cuando contenga dicha información. Cabe destacar que las probabilidades de que la dirección deseada se encuentre en L2 es relativamente elevada en comparación con L1, ello es debido al tamaño empleado en este proyecto para cada uno de ellos. Concretamente, para obtener unos resultados deseados el tamaño L2 pasará a ser el doble que el de L1, por lo que dispondrá de más espacio para poder almacenar así más direcciones. El proyecto se encuentra estructurado principalmente en tres partes. En la primera de ellas, se realizará una introducción de conceptos que se consideran importantes por estar estrechamente ligados con el tema que se trata a lo largo del proyecto, así como del conjunto de herramientas utilizadas. 17

17 Un concepto muy importante debido a que se han realizado las simulaciones sobre esta arquitectura, son los procesadores superescalares. Éstos se caracterizan por conseguir ejecutar múltiples pipelines de forma simultánea, consiguiendo así ejecutar más instrucciones por segundo que un procesador escalar. Por otro lado, también destaca el apartado correspondiente al TLB, donde se efectuará una descripción de su integración/funcionamiento. En el siguiente bloque, se encontraría el estudio estático. En él se ha efectuado un análisis del comportamiento del TLB sin considerar un segundo nivel para diferentes posibles configuraciones. Para ello, los valores estudiados han sido el tiempo de acceso, el área y el consumo. La realización de esta parte, se ha efectuado variando el grado de asociatividad, el tamaño de línea, la escala de integración y el número de puertos de lectura y escritura. Por último, se ha efectuado el estudio dinámico. En éste se pretende estudiar el efecto de la implementación de un TLB en L2 comparada con una misma configuración en L1, pero con la diferencia de no contar con este nuevo nivel. Para su realización, se ha optado por estudiar los parámetros IPC, miss_rate y tiempo medio de acceso. 18

18 3. INTRODUCCIÓN 3.1. SEGMENTACIÓN DE CAUCE Y PROCESADORES SEGMENTADOS Conceptos teóricos En un procesador segmentado su microarquitectura se implementa a través de un circuito segmentado o cauce, es capaz de procesar varias instrucciones simultáneamente, aunque cada una de ellas puede encontrarse en una etapa diferente del cauce. El procesador es capaz de aprovechar el paralelismo entre instrucciones y aumentar su rendimiento (ejecutando más instrucciones por unidad de tiempo) sin tener que reducir necesariamente el tiempo de ejecución de cada instrucción. La segmentación de cauce (pipeling) es una técnica que permite aumentar el rendimiento del sistema. Consiste en identificar una serie de fases o pasos en el procesamiento de la tarea que realiza el sistema con el fin de rediseñarlo de forma que cada una de dichas fases se puedan implementar en una etapa que pueda trabajar independientemente de las otras. Con ello, el sistema podría estar procesando varias tareas al mismo tiempo, aunque cada una de ellas estaría en una etapa diferente, y por tanto en una fase diferente de su procesamiento Notas históricas El inicio del uso de la segmentación de cauce se puede ubicar en el IBM 709 que apareció en 1958 como una mejora del IBM 704. Con la misma frecuencia que el IBM 704, se conseguía un 60% más de prestaciones. En 1962 surgió el IBM 7094I. Entre las técnicas que incorporaba, una de las más destacadas es la inclusión del registro IBR (Instruction Backup Register), para almacenar la siguiente instrucción a ejecutar, permitiendo el solapamiento entre la ejecución de una instrucción y la captación de la siguiente. No es hasta el IBM 7030 Stretch donde se puede hablar de procesador de propósito general segmentado. Su microarquitectura estaba implementada a través de un cauce con cuatro etapas en la que se solapaban la captación, la decodificación y la ejecución. Después de utilizarse frecuentemente desde finales de los 50, la segmentación de cauce pasó a un plano secundario desde finales de los años 60 hasta finales de los 70, debido a que se hacía más 19

19 énfasis en las máquinas orientadas a simplificar el software. En los 80, con las arquitecturas RISC 1 se vuelve a utilizar la segmentación de cauce, ya que RISC favorece el diseño sencillo para un cauce que puede integrarse en un microprocesador y facilitan el aprovechamiento eficiente del mismo. Desde mediados de los 80 los microprocesadores incorporan la segmentación de cauce en sus microarquitecturas de forma generalizada. En los años 90 se pasa a usar la segmentación incluso en los procesadores embebidos/integrados que necesitan prestaciones más elevadas Microprocesadores segmentados Si se analiza el ciclo de procesamiento de una instrucción, es posible distinguir diferentes etapas, tales como: la captación de la instrucción (FI), la decodificación de la misma (DI), el cálculo de los operandos (CO), la captación de operandos (FO), la ejecución de la instrucción (EI) y por último el almacenamiento del resultado (WO). Debido a que las instrucciones utilizan (idealmente) diferentes recursos en las distintas etapas de su ejecución, surge la idea de la segmentación. Un microprocesador segmentado es aquel que divide la ejecución de una instrucción en diversas etapas, de tal forma que, tan pronto como una instrucción finaliza la i ésima etapa, avanza a la etapa i+1, permitiendo que la instrucción ubicada en la etapa i 1 alcance la etapa i. De esta manera se consigue iniciar en cada ciclo de reloj, la ejecución de una instrucción, ejecutando varias a la vez. Figura 1: Evolución de las instrucciones a través de las diferentes etapas de un microprocesador segmentado Pero, la diferente duración temporal de las etapas, la aparición de instrucciones de saltos condicionales, las llegadas de interrupciones, las disputas en el acceso a los recursos de hardware y la dependencia de datos entre las instrucciones en ejecución complican el diseño, debiéndose incluir la lógica necesaria para contrarrestar este tipo de conflictos. 1 RISC (Reduced Instruction Set Computer): Tipo de arquitecturas de computadoras que promueve conjuntos pequeños y simples de instrucciones que pueden tomar poco tiempo para ejecutarse. 20

20 3.2. MICROPROCESADORES SUPERESCALARES En la mayoría de las aplicaciones, una gran parte de las operaciones se realiza con cantidades escalares, y el término superescalar, hace referencia a una máquina que ha sido diseñada para mejorar la velocidad de ejecución de las instrucciones escalares. En la implementación superescalar, las instrucciones comunes (aritmética entera y de punto flotante, cargas, almacenamientos y saltos condicionales) pueden iniciar su ejecución simultáneamente y ejecutarse de manera independiente siguiendo diferentes trayectos. La principal parte de los microprocesadores superescalares actuales disponen de un mecanismo de planificación dinámica de instrucciones. Es decir, las instrucciones no se ejecutan en el orden en que aparecen en el programa sino que el hardware decide en qué orden se ejecutan para un mayor rendimiento. De aquí que, también se les denomine microprocesadores con ejecución fuera de orden. La arquitectura del RISC se presta para usar técnicas superescalares, pero también se puede hacer en una CISC 2. Para la realización de este proyecto, la arquitectura utilizada es concretamente una de tipo RISC. En apartados asociados al estudio dinámico se habrá detalladamente de ella. Los procesadores superescalares son procesadores segmentados, donde se introducen varios pipelines (trayectos segmentados) independientes, permitiendo procesar más de una instrucción por ciclo. Figura 2: Evolución de las instrucciones a través de las diferentes etapas de un microprocesador superescalar con dos trayectos segmentados de seis etapas cada uno Una de las maneras de aumentar las prestaciones de los procesadores segmentados sería la de utilizar varias unidades funcionales que pudiesen trabajar simultáneamente con diferentes instrucciones. 2 CISC (Complex Instruction Set Computer) es un modelo de arquitectura de computadores. Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC. 21

21 Si bien con esta mejora se puede mejorar el rendimiento de un procesador segmentado, no permite sobrepasar el límite máximo de una instrucción terminada por cada ciclo. Por tanto, la idea que surge en los procesadores superescalares es la de conseguir que puedan procesar a la vez varias instrucciones en todas las etapas. Una primera forma de mejorar el número de instrucciones procesadas por ciclo consiste en organizar el procesador en varios cauces que funcionen en paralelo y de forma casi independiente. Figura 3: Microarquitectura para un procesador segmentado capaz de procesar dos instrucciones por ciclo Sin embargo, la forma usual de organizar la microarquitectura en los procesadores superescalares es la que se muestra a continuación: Figura 4: Microarquitectura más usual en procesadores superescalares Aquí, en cada una de las etapas es capaz de procesar varias instrucciones por ciclo. Entre cada una de las diferentes etapas están presentes diferentes estructuras de almacenamiento (buffers, 22

22 cachés, etc.), que guardan la informació de la instrucción procesada en la etapa anterior, hasta que les toque ser procesadas en la siguiente etapa. ETAPAS: 1) El microprocesador dispone de una memoria caché de instrucciones desde la cual, en cada ciclo, se captan varias instrucciones a la vez del programa a ejecutar (etapa de captación de instrucciones (IF)), que está compuesto por una secuencia lineal de instrucciones. Además, se incluye en el proceso de captación, una técnica de predicción de saltos para lograr una mayor fluidez en la captación de las instrucciones. 2) Las instrucciones pasan, en el orden captado, a una cola donde se introducen de forma ordenada en la etapa de decodificación (ID), tantas como sea capaz de codificar por ciclo. A la espera de que los operandos y unidades funcionales que necesitan estén disponibles, se almacenan en estructuras (ventana de instrucciones, estaciones de reserva, buffer de renombramiento, etc.) y se examinan las dependencias de datos entre las instrucciones para encontrar aquellas que sean independientes y se puedan ejecutar en paralelo. 3) A continuación, se escogerá las que pueden pasar a ejecutarse (etapa de emisión (issue)). En esta etapa se determinará qué instrucciones de las que se encuentran dentro de unos ciertos buffers pueden pasar a ejecutarse y a qué unidad funcional. El número máximo de unidades de procesamiento indicará el número máximo de instrucciones que podrán ejecutarse simultáneamente. 4) La etapa de ejecución está implementada por varias unidades funcionales, para aumentar las prestaciones, que realizan las operaciones de codificación de las instrucciones (operaciones aritméticas, escritura o lectura de memoria, unidad de procesamiento de saltos). 5) Finalmente, se pasaría a la etapa de escritura, que almacenaría los resultados en el banco de registros del procesador. En un procesador superescalar las instrucciones se captan y se decodifican en el orden en que aparecen en el programa. Sin embargo, puede ocurrir que el orden en que las instrucciones se ejecutan y el orden en que cambian los registros y la memoria pueden no coincidir con el orden de las instrucciones en el código. El motivo de no respetar dicho orden se debe al posible aprovechamiento del paralelismo entre instrucciones y el paralelismo disponible en el procesador. Así pues, un procesador superescalar debe ser capaz de identificar el paralelismo entre instrucciones (ILP) existente en el código y permitir que los recursos se usen lo más eficazmente en la ejecución paralela de instrucciones. 23

23 3.3. LA MEMORIA Después del procesador, la memoria es el componente más importante en un ordenador. De manera ideal, una memoria deberá ser extremadamente rápida, con tamaño de sobra y con coste insignificante. Pero ello es idealmente, ya que ninguna tecnología actual satisface todos estos requisitos. Figura 5: Jerarquía usual de memoria Los programas y datos necesitan estar en la memoria principal para ser ejecutados, o para poder ser referenciados. Los programas o datos que no se necesitan de inmediato pueden guardarse en la memoria secundaria hasta que se necesiten, y en ese momento se transfieren a la memoria principal para ser ejecutados o referenciados. Los soportes de memoria secundaria, como por ejemplo discos, son en general menos caros que la memoria principal, y su capacidad es mucho mayor. Normalmente, es mucho más rápido el acceso a la memoria principal que a la secundaria. La jerarquía de memoria se divide en: Registros internos de la CPU. Éstos son tan rápidos como ella. Por supuesto el acceso a ellos no implica retrasos. Los programas deben administrarlos (decidir qué colocar en ellos). Memoria caché. CPU Caché Transferencia de palabras Transferencia de bloques Memoria principal Figura 6: Caché y memoria principal Es un conjunto de datos duplicados de otros originales, con la propiedad de que los datos originales son costosos de acceder, normalmente en tiempo, respecto a la copia en la caché. Cuando se accede por primera vez a un dato, se hace una copia en la caché; los 24

24 accesos siguientes se realizan a dicha copia, haciendo que el tiempo de acceso medio al dato sea menor. La memoria caché está estructurada por celdas, donde cada celda almacena un byte. La entidad básica de almacenamiento la conforman las filas, llamados también líneas de caché. Por ejemplo, una caché L2 de 512 KB se distribuye en filas y 32 columnas. Cuando se copia o se escribe información de la RAM por cada movimiento siempre cubre una línea de caché. La memoria caché tiene incorporado un espacio de almacenamiento llamado Tag RAM, que indica a qué porción de la RAM se halla asociada cada línea de caché, es decir, traduce una dirección de RAM en una línea de caché concreta. Cabe destacar, que actualmente la memoria caché cuenta con uno o más niveles: L1 (caché de nivel 1) y, generalmente, L2 (caché de nivel 2). Memoria principal. La memoria principal también se conoce como RAM (Random Access Memory). Contiene de forma temporal el programa, los datos y los resultados que están siendo usados por el usuario. En general es volátil, pierde su contenido cuando se apaga el computador, a excepción de la CMOS RAM. EL contenido de las memorias no es otra cosa que bits (binary digits), que se corresponden con dos estados lógicos: el 0 (cero) sin carga eléctrica y el 1 con carga eléctrica. A cada uno de estos estados se le llama bit. El bit es la unidad mínima de almacenamiento de datos. Disco magnético (disco duro). El almacenamiento en disco es dos órdenes de magnitud más barato por bit que la RAM y también suele ser dos órdenes de magnitud más grande. El único problema es que el tiempo necesario para tener acceso aleatorio a los datos que contiene es casi tres órdenes de magnitud superior. 25

25 3.4. Gestión de la memoria En el caso de la memoria, el sistema operativo (SO), con el apoyo del hardware de gestión de memoria del procesador, debe repartir el almacenamiento existente proporcionando un espacio de memoria independiente para cada proceso y evitando la posible interferencia voluntaria o involuntaria de cualquier otro proceso Requisitos de la gestión de memoria Sea cual sea la política de gestión de memoria empleada en un determinado sistema, se pueden destacar las siguientes características como objetivos deseables del sistema de gestión de memoria: Reubicación: En un sistema multiprogramado la memoria se encuentra compartida por varios procesos, por lo tanto, los procesos deben ser cargados y descargados de memoria. Protección: En un sistema con multiprogramación es necesario proteger al sistema operativo y a los otros procesos de posibles accesos que se puedan realizar a sus espacios de direcciones. Compartición: En ciertas situaciones, bajo la supervisión y control del sistema operativo, puede ser provechoso que los procesos puedan compartir memoria. Organización lógica: Tanto la memoria principal como la secundaria presentan una organización física similar, como un espacio de direcciones lineal y unidimensional. Debe existir una cierta correspondencia entre el SO y el hardware al tratar los datos y los programas de los usuarios de acuerdo a la estructura lógica que ellos presenten. Organización física: Debe ser parte de la gestión de memoria, la organización del flujo de información entre la memoria principal y la memoria secundaria. 26

26 Memoria principal o real Asignación contigua En un esquema de asignación de memoria contigua un proceso se ubica en su totalidad en posiciones consecutivas de memoria. Generalmente se divide la memoria en dos particiones, una para el SO residente y otra para los procesos de usuario. Particiones estáticas El esquema más sencillo de gestión de la memoria disponible es dividirlo en regiones con límites fijos. Existen dos posibilidades: 1) Particiones estáticas de igual tamaño: Cualquier proceso cuyo tamaño sea menor o igual que el tamaño de la partición puede cargarse en cualquier partición libre. Si todas las particiones están ocupadas, el SO puede sacar un proceso de una partición. Un programa puede que no se ajuste a una partición. El programador debe diseñar el programa mediante superposiciones. No requieren el uso de memoria virtual. Es una política de gestión de memoria que prácticamente ha quedado obsoleta. Ej: SO IBM OS/ ) Particiones estáticas de diferente tamaño: Pueden asignar cada proceso a la partición más pequeña en la que quepa. Hace falta una cola para cada partición. Los procesos están asignados de forma que se minimiza la memoria desaprovechada dentro de cada partición. En ambos casos, surgen dos problemas: El programa puede ser mayor que los espacios de la partición => diseño del programa para que sólo una parte del programa esté en la memoria principal en cada instante => Superposición. Uso de la memoria principal ineficiente, cualquier programa aunque sea pequeño ocupará toda una partición => desaprovechamiento de memoria => Fragmentación. 27

27 Particiones dinámicas Con esta técnica, las particiones son variables en número y longitud. Cuando se carga un proceso en la memoria principal, se le asigna exactamente tanta memoria como necesita y no más. Finalmente, hay varios huecos en la memoria. Este fenómeno se denomina fragmentación externa. Ante este fenómeno, se deberá usar la compactación para desplazar los procesos que estén contiguos, de forma que toda la memoria libre quede junta en un bloque Asignación no contigua En la asignación no contigua, un programa se divide en varios bloques o segmentos que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación contigua. Para este tipo de asignación se recurre, por ejemplo, a la paginación. La cual se pasa a explicar en el siguiente apartado Paginación simple Fundamentos 28

28 Para efectuar la lectura de una palabra de la memoria, se debe realizar la traducción mediante la tabla de páginas de una dirección virtual (DV) (o lógica) (#página:desplazamiento) a una dirección física (#marco:desplazamiento). Debido a que la tabla de páginas es de longitud variable, según el tamaño del proceso, no se puede suponer que quepa en los registros. En su lugar, debe estar en la memoria principal para ser accesible Paginación La paginación es un esquema de gestión de memoria que suprime el requisito de asignación contigua de memoria física. En este tipo de esquema, se mantiene la correspondencia de direcciones para conservar la ilusión de contigüidad del espacio de direcciones virtuales de un proceso a pesar de su ubicación discontinua en memoria física. La paginación considera el espacio de direcciones lógicas (o también conocidas como virtuales) de cada proceso como un conjunto de bloques de tamaño fijo de igual tamaño llamados páginas 3. Cada dirección lógica manejada para un proceso estará conformada por un par de valores (#página:desplazamiento). La memoria física se administra implementando bloques de tamaño fijo denominados marcos (frames). Por lo general el tamaño designado para los marcos y páginas es pequeño. El SO internamente mantiene una tabla de páginas (TP) donde relaciona cada página cargada en memoria principal con el frame que la contenga. Utilizando el número de página el sistema recorrerá toda la tabla de páginas hasta localizarla, sumará el desplazamiento a la dirección de carga y obtendrá la dirección real. Cada programa se subdivide en páginas, que se cargan en frames libres que no tienen porque ser seguidos. El sistema analizará cada nuevo trabajo para conocer el número de página que ocupa y buscará en la lista de frames libres un número igual de frames; si encuentra suficientes cargará en ellas las páginas del programa y construirá la tabla de páginas. Figura 7: Esquema paginación 3 Las páginas sirven como unidad de almacenamiento de información y de transferencia entre memoria principal y memoria auxiliar o secundaria. Las páginas de un programa necesitan estar contiguamente en memoria. Los mecanismos de paginación permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se referencien. 29

29 A continuación, se puede observar la forma de una dirección lógica: Figura 8: Estructura dirección lógica Tanto el espacio lógico como físico está dividido en páginas de mismo tamaño y la traducción consiste simplemente en encontrar la correspondencia entre página y marco. Nótese que consecuencia de ello es que todas las páginas son del mismo tamaño (2 k ), y además todas las páginas empiezan en una posición de memoria múltiplo de dicho tamaño (frontera de página). Las páginas se transfieren del almacenamiento secundario al primario en bloques llamados marcos. Éstos tienen el mismo tamaño que las páginas, comienzan en direcciones del almacenamiento real que son múltiplos enteros del tamaño fijo de la página y podrá colocarse una nueva página dentro de cualquier marco de página o celda de página disponible. Resumiendo, mediante la paginación, la memoria principal se divide en pequeños marcos del mismo tamaño. Cada proceso se divide en páginas del tamaño del marco (los procesos pequeños necesitarán pocas páginas, mientras que los procesos grandes necesitarán más). Cuando se introduce un proceso en la memoria, se cargan todas sus páginas en los marcos libres y se rellena su tabla de páginas. Figura 9: Ejemplo de traducción de direcciones mediante paginación La traducción se lleva a cabo mediante una TP, la cual es indexada por el número de página y proporciona el número de marco. 30

30 Si se accede a una página no presente, la MMU 4 (Memory Management Unit) generará un fallo de página Tamaño de la página La decisión del tamaño de página implica una solución de compromiso entre aquellos factores que favorecen una página mayor frente a los que favorecen una página más pequeña. Ventajas de un tamaño de página grande: Menos páginas Tabla de páginas más pequeña Ahorro de memoria. Transferencia más eficiente. Ventajas de un tamaño de página pequeño: Mejor aprovechamiento de la memoria por una menor fragmentación de la misma. Procesos pequeños: una página grande implica un tiempo mayor para invocar el proceso. La tendencia es en general hacia páginas grandes, ya que la penalidad por traer una página es muy grande y se justifica más si se traen más datos. La mayoría de las máquinas tienen páginas de 4K, incrementándose para nuevos modelos. A la hora de efectuar la elección del tamaño de la página, se deben tener en cuenta diversos factores: Tamaño de las unidades de transferencia con memoria secundaria. Es conveniente que el tamaño de la página coincida con un número entero de sectores. De esta forma se optimizan tanto el uso como el tiempo de acceso a memoria secundaria. Tamaño de la tabla de páginas Ya que si el tamaño de la página aumenta, el tamaño de la tabla de páginas (TP) disminuye. Tamaño medio de las entidades lógicas del programa Si el tamaño de la página es similar al tamaño medio de las entidades lógicas del programa, se aprovecha al máximo la localidad espacial. Fragmentación interna. 4 MMU: es un dispositivo hardware, responsable del manejo de los accesos a la memoria por parte de la Unidad de Procesamiento Central (CPU). Entre las funciones de este dispositivo se encuentran la traducción de las direcciones lógicas (o virtuales) a direcciones físicas (o reales), la protección de la memoria, el control de caché. 31

31 Computador IBM360/67 MC68020 MIPS R2000/3000 Alpha Pentium Tamaño de página 4 KB 256 bytes a 32 KB 4 KB 8 KB 4 KB o 4 MB Tabla 1: Ejemplos de tamaños de páginas El tamaño de la página al igual que el del marco está definido por el hardware y suele ser potencia de 2 que varía entre 512 bytes y 16 megabytes por página dependiendo de la arquitectura del computador. La selección de una potencia de dos para el tamaño de las páginas facilita mucho la traducción de una dirección lógica a un número de página y desplazamiento de página Implementación de la tabla de páginas (TP) La implementación de la tabla de páginas se puede llevar a cabo mediante alguna de las siguientes opciones: Implementación hardware Ventaja Se obtiene una alta velocidad en hardware Desventaja Resulta problemática cuando la tabla de páginas debe ser grande Implementación en memoria principal La tabla de páginas puede crece según se quiera La velocidad de acceso a memoria es relativamente baja, dado que cada referencia a memoria involucra dos accesos Tabla 2: Posibles implementaciones de la TP Segmentación simple Otro modo de subdividir un programa es la segmentación. En este caso, el programa junto con sus datos se divide en un conjunto de segmentos. No es necesario que todos los segmentos de todos los programas tengan la misma longitud, aunque existe una longitud máxima de segmento. El tamaño de cada segmento será el requerido según la petición, por ejemplo el tamaño del proceso a cargar. 32

32 Al igual que en la paginación, una dirección lógica segmentada consta de dos partes, un número de segmento y un desplazamiento. Con segmentación, un programa puede ocupar más de una partición y éstas no tienen por qué estar contiguas. Si bien la paginación es transparente al programador, la segmentación suele ser visible. Generalmente, se asignan los programas y los datos a diferentes segmentos. Una consecuencia del tamaño desigual de los segmentos es que no hay una correspondencia simple entre las direcciones lógicas y las direcciones físicas. Análogamente a la paginación, en la segmentación se utilizará una tabla de segmentos (TS) para cada proceso y una lista de bloques libres en la memoria principal. Cada entrada de la TS contiene la dirección de inicio del segmento en la memoria principal. Dicha entrada también debe proporcionar la longitud del segmento, para asegurarr que no se usen direcciones no válidas. Cuando se pasa a ejecutar un proceso, se carga la dirección de su TS en un registro especial llamado RIED (Registro Identificador del Espacio de Direccionamiento), el cual permite agilizar el acceso a dicha dirección. Resumiendo, con segmentación simple un proceso se divide en varios segmentos que no tienen por qué ser del mismo tamaño. Cuando un proceso se introduce en la memoria, se cargan todos sus segmentos en regiones de memoria libres y se rellena la tabla de segmentos Traducción de direcciones segmentadas Figura 10: Traducción de direcciones mediante segmentación Una dirección lógica consta de dos partes: un número de segmento y un desplazamiento dentro de ese segmento. El número de segmento se utiliza como un índice en la TS. Cada entrada de la TS tiene una base de segmento y un límite/tamaño t. El desplazamiento d de la dirección lógica tiene que estar comprendido entre 0 y el límite de segmento. En caso contrarioo se produce una 33

33 excepción al sistema operativo (tentativa de direccionamiento lógico más allá del fin de segmento). Si este desplazamiento es legal, se añade a la base para producir la dirección de la tabla deseada en la memoria física. La tabla de segmentos es así esencialmente una matriz de pares registros base/límite. La traducción, al igual que en la paginación, se lleva a cabo por hardware en la MMU. Comprobaciones que se efectúan: 1. Está definido el descriptor de segmento? Si no es así, error de acceso: segmento no validado. 2. Está el desplazamiento dentro del segmento? Si no es así, error de acceso: desplazamiento no válido Protección Una ventaja importante de la segmentación es la asociación de la protección con los segmentos. Puesto que los segmentos representan una porción del programa, es probable que todas las entradas en el segmento se utilicen de la misma manera. De ahí que se tengan algunos segmentos que son instrucciones, mientras que otros son datos. En una arquitectura moderna las instrucciones son no automodificables, de modo que los segmentos de instrucciones pueden definirse como de sólo lectura o sólo ejecución. El hardware verificará los bits de protección asociados a cada entrada en la tabla de segmentos para impedir accesos ilegales a memoria, tales como tentativas de escribir en un segmento de sólo lectura o de utilizar un segmento de sólo ejecución como datos. Situando una tabla en un segmento propio, el hardware verificará automáticamente que toda indexación en la tabla es legal, y no sobrepasa los límites de la misma. Así, muchos errores frecuentes en programas serán detectados por hardware antes de que puedan ocasionar un daño serio. Figura 11: Esquema protección en segmentación 34

34 Se determina si es válido el acceso o no en función de los bits de protección y del tipo de acceso. Algunos procesadores se ahorran bits de protección haciendo que algunas opciones sean implícitas. Por ejemplo, en la familia 80286: Bit E: Tipo de segmento. 0: datos (siempre se pueden leer, nunca se pueden ejecutar). 1: código (siempre se pueden ejecutar, nunca se pueden modificar). R/W: En segmentos de código, si R/W= 1 el segmento se puede leer. En segmentos de datos, si R/W = 1 el segmento se puede modificar Fragmentación El SO tiene que encontrar y asignar memoria para todos los segmentos de un programa. Esta situación es similar a la paginación, excepto en el hecho de que los segmentos son de longitud variable; las páginas son todas del mismo tamaño. La segmentación puede ocasionar entonces fragmentación externa, cuando todos los bloques libres de memoria son demasiado pequeños para acomodar a un segmento. En este caso, el proceso puede simplemente verse obligado a esperar hasta que haya disponible más memoria (o al menos huecos más grandes), o puede utilizarse la compactación para crear huecos mayores. Puesto que la segmentación es por naturaleza un algoritmo de reubicación dinámica, se puede compactar la memoria siempre que se desee. En qué medida es mala la fragmentación externa en un esquema de segmentación? La respuesta a esta pregunta depende principalmente del tamaño medio de segmento. En un extremo, se podría definir cada proceso como un segmento; este esquema es el de las particiones dinámicas. En el otro extremo, cada palabra podría situarse en su propio segmento y reubicarse por separado. Esta disposición elimina la fragmentación externa. Si el tamaño medio de segmento es pequeño, la fragmentación externa también será pequeña. Puesto que los segmentos individuales son más pequeños que el proceso en conjunto, es más probable que encajen en los bloques de memoria disponibles. 35

35 Paginación vs Segmentación Es evidente, tras lo comentado en apartados anteriores, que existen diferencias notables entre los sistemas de paginación y los basados en segmentación, ya que en ambos surgen grandes ventajas e inconvenientes. Muestra de ello es que, diversos fabricantes utilizan diferentes políticas: Motorola 6800 Paginación (MAC antes de PowerPC). Intel 80x86 Segmentación (PC) Fragmentación La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera. En ambos casos, surge fragmentación. Pero como se verá a continuación, el tipo de fragmentación es diferente: 1) Fragmentación interna (paginación) Se debe a la diferencia de tamaño entre la partición de memoria y el objeto residente dentro de ella. Se produce siempre que se trabaje con bloques de memoria de tamaño fijo. Si el tamaño del objeto no coincide con el de partición, queda una zona que no se puede aprovechar. Figura 12: Fragmentación interna La fragmentación interna es causada por el hecho de que difícilmente un programa ocupe un número entero de páginas, entonces parte de la última es desaprovechada. 36

36 2) Fragmentación externa (segmentación) Surge como resultado del desaprovechamiento de huecos de memoria entre segmentos. Figura 13: Fragmentación externa La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un único gran bloque, pero ello sólo es posible si la relocalización es dinámica y se hace en tiempo de ejecución Ejemplo de traducción de dirección lógica a física Los primeros esquemas de organización de la memoria principal utilizaban las direcciones lógicas directamente como direcciones físicas. Esquemas más evolucionados de organización de memoria principal distinguen entre estos dos espacios de direcciones. En estos casos, la traducción de una dirección lógica a una física se realiza mediante un mecanismo hardware llamado Unidad de Gestión de Memoria (MMU). Paginación Ejemplo: Dirección relativa 1502 en binario Dirección lógica de 16 bits Nº de página Desplazamiento de 10 bits Tabla de páginas Dirección lógica de 16 bits Figura 14: Ejemplo de traducción de dirección lógica a física mediante paginación 37

37 En la figura 14, se usa la dirección lógica , que corresponde con el número de página 1 y el desplazamiento 478. Considerando que la página está en el marco de memoria principal 6=000110, la dirección física estaría formada por el marco 6 y el desplazamiento 478 = Segmentación Figura 15: Ejemplo de traducción de dirección lógica a física mediante segmentación En la figura 15, se utiliza la dirección lógica , que pertenece al número de segmento 1 y desplazamiento 752. Suponiendo que dicho segmento se encuentra en la memoria principal y comienza en la dirección física Entonces la dirección física que se obtendrá será = Comparativa general Necesita el programador saber si está utilizando esta técnica? Cuántos espacios lineales de direcciones existen? Puede el espacio total de direcciones exceder el tamaño de la memoria física? Pueden distinguirse los procedimientos y los datos, además de protegerse en forma independiente? Pueden adecuarse con facilidad las tablas con tamaños fluctuantes? Se facilita el uso de procedimientos compartidos entre los usuarios? Paginación Segmentación Sí No 1 Muchos Sí Sí No Sí No Sí No Sí 38

38 Reemplazo de un bloque Trivial (todos los bloques tienen el mismo tamaño) Difícil (debe encontrar una parte no utilizada en memoria principal de tamaño variable y contigua) Uso ineficiente de memoria Fragmentación interna Fragmentación externa Tráfico de disco eficiente Sí (ajusta tamaño de No siempre (pequeños segmentos página para equilibra pueden transferir sólo unos pocos tiempo de acceso y bytes) tiempo de transferencia) Para qué se inventó esta técnica? Para obtener un gran Para permitir que los programas y datos espacio lineal de fueran separados en espacios direcciones sin tener que adquirir más memoria física independientes de direcciones y poder proporcionar la protección y uso de objetos compartidos Tabla 3: Comparativa entre paginación y segmentación Paginación: Ventajas e Inconvenientes Ventajas Es posible comenzar a ejecutar un programa, cargando sólo una parte del mismo en memoria, y el resto se cargará bajo solicitud. No es necesario que las páginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existan marcos de paginas libres dispersos en la memoria. Es fácil controlar todas las páginas, ya que tienen el mismo tamaño. El mecanismo de traducción de direcciones permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario. Se libera al programador de la restricción de programar para un tamaño físico de memoria, con lo que se aumenta su productividad. Se puede programar en función de una memoria mucho más grande a la existente. Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el número de programas multiprogramándose. Se elimina el problema de la fragmentación externa. Inconvenientes El coste de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consume muchos más recursos de memoria. 39

39 Se deben reservar áreas de memoria para las tablas de páginas de los procesos. Al no ser fija el tamaño de éstas, se crea un problema semejante al de los programas (como asignar un tamaño óptimo sin desperdicio de memoria u ovearhead del procesador). Aparece el problema de fragmentación interna. Así, si se requieren 5K para un programa, pero las paginas son de 4K, deberán asignárseles 2 páginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias páginas, pero no podrán ser utilizados. Debe asignarse un tamaño promedio a las páginas, evitando que si son muy pequeñas, se necesiten tablas de páginas muy grandes, y si son muy grandes, se incremente el grado de fragmentación interna Segmentación: Ventajas e Inconvenientes Ventajas El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular. Es posible compilar módulos separados como segmentos. Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. Y cambios dentro de un módulo no afecta al resto de los módulos. Es fácil el compartir segmentos. Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución. Existe la posibilidad de definir segmentos que aún no existen. Así, no se asignará memoria, sino a partir del momento que sea necesario hacer uso del segmento. Un ejemplo de esto, serían los arreglos cuya dimensión no se conoce hasta que no se comienza a ejecutar el programa. En algunos casos, incluso podría retardar la asignación de memoria hasta el momento en el cual se referencia el dato por primera vez. Inconvenientes Hay un incremento en los costes de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc. Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externa, lo que puede suponer un plan de reubicación de segmentos en memoria principal. 40

40 Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de tamaños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación. Al permitir que los segmentos varíen de tamaño, pueden ser necesarios planes de reubicación a nivel de disco. No se puede garantizar, que al salir un segmento de la memoria, éste pueda ser traído fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño. La compartición de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software. Las desventajas mencionadas (tanto para paginación como para segmentación) tratan de ser minimizadas, bajo la técnica conocida como paginación y segmentación combinadas Memoria virtual En un sistema la memoria está organizada como una jerarquía de niveles de almacenamiento, entre los que se mueve la información dependiendo de la necesidad de la misma en un determinado instante. La técnica de memoria virtual se ocupa de la transferencia de información entre la memoria principal y la secundaria. La memoria secundaria está normalmente soportada en un disco (o partición). La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta "ilusión" permite que los programas se efectúen sin tener en cuenta el tamaño exacto de la memoria física. La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el espacio de direcciones virtuales hace un seguimiento de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente. La memoria virtual ha llegado a ser un componente esencial de la mayoría de los SO actuales. Y como en un instante dado, en la memoria sólo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria. Es más, se ahorra tiempo, porque los 41

41 fragmentos que no se usan no se cargan ni se descargan de la memoria. Sin embargo, el SO debe saber cómo gestionar este esquema. La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física. En un estado estable, prácticamente toda la memoria principal estará ocupada con fragmentos de procesos, por lo que el procesador y el SO tendrán acceso directo a la mayor cantidad de procesos posibles, y cuando el SO traiga a la memoria un fragmento, deberá expulsar otro. Si expulsa un fragmento justo antes de ser usado, tendrá que traer de nuevo el fragmento de manera casi inmediata. Demasiados intercambios de fragmentos conducen a lo que se conoce como hiperpaginación, donde el procesador pasa más tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitarlo el SO intenta adivinar, en función de la historia reciente, qué fragmentos se usarán con menor probabilidad en un futuro próximo. Los argumentos anteriores se basan en el principio de cercanía o principio de localidad, que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse. Dicha propiedad permite que un proceso genere muy pocos fallos aunque tenga en memoria principal sólo una parte de su imagen de memoria. Ya que, sería posible hacer predicciones inteligentes sobre qué fragmentos de un proceso se necesitarán en un futuro cercano y así evitar la hiperpaginación. Este principio consiste en el agrupamiento de las lecturas de memoria por medio de la unidad central de procesamiento. Las mismas, ya sean para instrucciones o para leer datos, se mantienen por lo general dentro de grupos de direcciones relativamente cercanas entre sí. El principio de cercanía sugiere que los esquemas de memoria virtual pueden funcionar eficazmente. Justo después de obtener la dirección física y antes de consultar el dato en memoria principal se busca en memoria caché, si está entre los datos recientemente usados la búsqueda tendrá éxito, pero si falla, la memoria virtual consulta memoria principal, o en el peor de los casos se consulta de disco (swapping). Cuando se usa memoria virtual, o cuando una dirección es leída o escrita por la CPU, una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en: la dirección real de memoria (la dirección de memoria física), o 42

42 una indicación de que la dirección de memoria deseada no se encuentra en memoria principal (llamada excepción de memoria virtual). En el primer caso, la referencia a la memoria es completada, como si la memoria virtual no hubiera estado involucrada: el software accede donde debía y sigue ejecutando normalmente. En el segundo caso, el SO es invocado para manejar la situación y permitir que el programa siga ejecutando o aborte según sea el caso Objetivos de la memoria virtual Permite disponer de un espacio de direcciones superior al real. Los programas pueden tener un tamaño mayor que el espacio disponible en memoria física. La gestión de la memoria virtual es transparente al programador/usuario. Permite compartir eficientemente la memoria entre múltiples procesos garantizando protección. La memoria principal necesita sólo las partes activas de los programas. Ello permite compartir eficientemente el procesador así como la memoria principal. Proporcionando los mecanismos de protección necesarios. La memoria física se reparte entre los procesos que se ejecutan en la máquina. Cada proceso puede tener su propio espacio de direcciones virtuales independiente del resto de procesos. La memoria virtual se basa en dos técnicas para lograr su propósito: la paginación y la segmentación Paginación La memoria virtual se construye generalmente sobre un esquema de paginación, ya sea paginación pura o segmentación paginada. Por tanto, las unidades de información que se transfieren entre la memoria principal y la secundaria son páginas. Tal como se indicó en apartados anteriores, en la paginación simple cada proceso dispone de su propia TP y, cuando carga todas sus páginas en la memoria principal, se crea y carga en la memoria principal una tabla de páginas. Cada entrada de la TP contiene el número de marco de la correspondiente página en la memoria principal. Si se considera un esquema de memoria virtual 43

43 basado en paginación se necesita también la TP. Donde se asociará una única TP para con cada proceso. Figura 16: Formato dirección virtual en memoria virtual basada en paginación Figura 17: Entrada de la TP en memoria virtual basada en paginación Debido a que sólo algunas de las páginas de un proceso pueden estar en memoria principal, se necesita un bit de presencia (P) en cada entrada de la tabla para indicar si la página correspondiente está presente o no en la memoria principal. Si el bit indica que la página está en memoria, la entrada incluye también el número de marco para dicha página. Otro bit de control necesario es el de modificación (M), para indicar si el contenido de la página correspondiente se ha alterado desde que la página se cargó en la memoria principal. También pueden estar presentes otros bits de control, como podrían ser la protección o la compartición. Traducción de direcciones Las transferencias desde la memoria secundaria hacia la principal se realizan normalmente bajo demanda (paginación por demanda). Cuando un proceso necesita acceder a una página que no está en memoria principal (a lo que se denomina fallo de página), el SO se encarga de transferirla desde la memoria secundaria. Si al intentar traer la página desde memoria secundaria se detecta que no hay espacio en la memoria principal (no hay marcos libres), será necesario expulsar una página de la memoria principal y transferirla a la secundaria. Por tanto, las transferencias desde la memoria principal hacia la secundaria se realizan normalmente por expulsión. El mecanismo básico de lectura de una palabra de la memoria supone la traducción por medio de la tabla de páginas de una dirección virtual o lógica, formada por un número de página y un desplazamiento, a una dirección física que está formada por un número de marco y un desplazamiento. Debido a que la tabla de páginas es de longitud variable, en función del tamaño del proceso, no es posible suponer que quepa en los registros. En su lugar, debe estar en la memoria principal para poder ser accesible. 44

44 Figura 18: Traducción de direcciones mediante paginación en memoria virtual Cuando se ejecute un proceso, la dirección de comienzo de la tabla de páginas para este proceso se mantendrá en un registro. El número de página de la dirección virtual se usará como índice en esta tabla para buscar el número de marco correspondiente. Éste se combina con la parte de desplazamiento de la dirección virtual para generar la dirección real. Para construir un esquema de memoria virtual sobre un procesador que ofrezca paginación, se utiliza el bit de la entrada de la tabla de páginas que indica si la página es válida. Estarán marcadas como inválidas todas las entradas correspondientes a las páginas que no están residentes en memoria principal en ese instante. Para estas páginas, en vez de guardarse la dirección del marco, se almacenará la dirección del bloque del dispositivo que contiene la página. Cuando se produzca un acceso a una de estas páginas, se producirá una excepción (fallo de página) que activará al SO que será el encargado de traerla desde la memoria secundaria. Cabe destacar que al utilizar el bit de validez para marcar la ausencia de una página y para indicar que una página es inválida (una página que corresponde con un hueco en el mapa), es necesario que SO almacene información asociada a la página para distinguir entre esos dos casos. Por último, hay que comentar que algunos sistemas de memoria virtual usan la técnica de la prepaginación. En un fallo de página no sólo se traen la página en cuestión, sino también las páginas adyacentes, ya que es posible que el proceso las necesite en un corto plazo de tiempo. La efectividad de esta técnica dependerá de la existencia de acierto en esta predicción. 45

45 Tratamiento del fallo de página La paginación por demanda presenta excepciones de fallo de página que advierten al SO que debe traer una página de memoria secundaria a primaria ya que un proceso la requiere. A continuación, se especifican los pasos típicos en el tratamiento de un fallo de página: 1º) La MMU produce una excepción y deja en un registro especial la dirección que causó el fallo. 2º) Se activa el SO que comprueba si se trata de una dirección correspondiente a una página inválida o a una página ausente de memoria. Si la página es inválida, se aborta el proceso o se le manda una señal. En caso contrario, se realizan los pasos que se describen a continuación. 3º) Se consulta la tabla de marcos para buscar uno libre. 4º) Si no hay un marco libre, se aplica el algoritmo de reemplazo para seleccionar una página para expulsar. El marco seleccionado se desconectará de la página a la que esté asociado poniendo como inválida la entrada correspondiente. Si la página está modificada, previamente hay que escribir su contenido a la memoria secundaria. 5º) Una vez que se obtiene el marco libre, se inicia la lectura de la nueva página sobre el marco y, al terminar la operación, se rellena la entrada correspondiente a la página para que esté marcada como válida y apunte al marco utilizado. Tal como se puede observar, en el peor de los casos, un fallo de página puede causar dos operaciones de entrada/salida al disco. Políticas de administración de la memoria virtual En un sistema de memoria virtual basado en paginación hay básicamente dos políticas que definen el funcionamiento del sistema de memoria: Política de reemplazo. Determina qué página debe ser desplazada de la memoria principal para dejar sitio a la página entrante. Política de asignación de espacio a los procesos. Decide cómo se reparte la memoria física entre los procesos existentes en un determinado instante. 46

46 Segmentación En la segmentación simple, se mencionó que cada proceso posee su propia tabla de segmentos (TS) y que, cuando todos los segmentos están en la MP, la TS del proceso se crea y se carga en la memoria. Cada entrada de la TS posee la dirección de comienzo del segmento correspondiente de la MP, así como su longitud. Esta misma estructura; una TS, se necesitará en memoria virtual basada en segmentación. Aquí, se asociará, de nuevo, una TS a cada proceso. Figura 19: Formato dirección virtual en memoria virtual basada en segmentación Figura 20: Entrada de la TS en memoria virtual basada en segmentación Al igual que ocurre con la memoria virtual basada en paginación, sólo algunos de los segmentos de un proceso estarán en la MP, debido a ello se necesita un bit en cada entrada de la TS para indicar si el segmento se encuentra en la MP. Si el bit indica que el segmento está en la memoria, la entrada incluirá también la dirección de inicio y la longitud del segmento. También se necesitará el bit de modificación, para indicar si el contenido del segmento ha sido modificado desde que se cargó en la MP. Otros bits necesarios son los de protección y los de compartición. Traducción de direcciones Para leer una palabra de la memoria habrá que traducir una dirección lógica o virtual (número_segmento:desplazamiento) a una dirección física mediante la TS. Figura 21: Traducción de direcciones mediante segmentación en memoria virtual 47

47 Al ejecutarse un proceso, la dirección de inicio de la TS de dicho proceso se guardará en un registro. El número de segmento de la dirección virtual se usa como índice de la tabla para buscar la dirección de la MP correspondiente al comienzo del segmento. Ésta se añade a la parte de desplazamiento de la dirección virtual para generar la dirección real Características de la paginación y la segmentación Los procesos se ejecutan sólo en MP, también conocida como memoria real. Aunque el usuario percibe una memoria mucho mayor (situada en el disco), la cual se denomina memoria virtual. Esta última memoria permite multiprogramación efectiva y releva al usuario de las altas restricciones de la MP. La tabla 4 resume las características de la paginación y segmentación, con y sin memoria virtual. Paginación simple Memoria virtual paginada Segmentación simple Memoria virtual segmentada La MP (Memoria Principal) está divida en trozos pequeños de tamaño fijos llamados marcos. El compilador o el sistema de gestión de memoria dividen los programas en páginas. Fragmentación interna en los marcos. La MP está divida en trozos pequeños de tamaño fijos llamados marcos. El compilador o el sistema de gestión de memoria dividen los programas en páginas. Fragmentación interna en los marcos. La MP no está dividida. El programador indica al compilador los segmentos del programa (es decir, el programador toma la decisión). No existe fragmentación interna. La MP no está dividida. El programador indica al compilador los segmentos del programa (es decir, el programador toma la decisión). No existe fragmentación interna. No existe fragmentación externa. El SO (Sistema Operativo) debe tener una TP (Tabla de Páginas) para cada proceso, indicando en qué marco está cada página. El SO debe mantener una lista de marcos libres. El procesador usa el nº de página y el desplazamiento para calcular las direcciones absolutas. Todas las páginas de un proceso tienen que estar en la MP para que el proceso se ejecute, a No existe fragmentación externa. El SO debe tener una TP para cada proceso, indicando en qué marco está cada página. El SO debe mantener una lista de marcos libres. El procesador usa el nº de página y el desplazamiento para calcular las direcciones absolutas. No todas las páginas de un proceso tienen que estar en marcos de la MP para que el proceso se ejecute. Fragmentación externa. El SO debe tener una TS (tabla de segmentos) para cada proceso, indicando la dirección de carga y la longitud de cada segmento. El SO debe mantener una lista de huecos libres en la MP. El procesador usa el nº de segmento y el desplazamiento para calcular las direcciones absolutas. Todos los segmentos de un proceso tienen que estar en la MP para que el proceso se ejecute, a Fragmentación externa. El SO debe tener una TS para cada proceso, indicando la dirección de carga y la longitud de cada segmento. El SO debe mantener una lista de huecos libres en la MP. El procesador usa el nº de segmento y el desplazamiento para calcular las direcciones absolutas. No todos los segmentos de un proceso tienen que estar en marcos de la MP para que el proceso se 48

48 menos que se use superposición. Las páginas se pueden leer cuando se necesiten. menos que se use superposición. ejecute. Los segmentos se pueden leer cuando se necesiten. La carga de un segmento en la MP puede exigir descargar uno o más segmentos en el disco. La carga de una página en la MP puede requerir descargar otra en el disco. Tabla 4: Características de la paginación y la segmentación Paginación y segmentación combinadas Tanto la paginación como la segmentación tienen sus ventajas. La paginación elimina la fragmentación externa y de este modo, aprovecha la memoria principal de forma eficiente. Además, puesto que los fragmentos que se cargan y descargan de la memoria principal son de tamaño fijo e iguales, es posible construir algoritmos se gestión de memoria sofisticados que aprovechen mejor el comportamiento de los programas. La segmentación tiene las ventajas antes citadas, incluida la capacitación de gestionar estructuras de datos que puedan crecer, la modularidad y el soporte de la compartición y la protección. Para combinar las ventajas de ambas, algunos sistemas están equipados con hardware del procesador y software del SO. En un sistema con paginación y segmentación combinadas, el espacio de direcciones de un usuario se divide en varios segmentos según el criterio del programador. Cada segmento se vuelve a dividir en varias páginas de tamaño fijo, que tienen la misma longitud que un marco de memoria principal. Si el segmento tiene menor longitud que la página, el segmento ocupará sólo una página. Desde el punto de vista del programador, una dirección lógica todavía está formada por un número de segmento y un desplazamiento en el segmento. Desde el punto de vista de sistema, el desplazamiento del segmento se ve como un número de página dentro del segmento y un desplazamiento dentro de la página. Figura 22: Traducción de direcciones en un sistema con paginación y segmentación en memoria virtual 49

49 La entrada de la tabla de segmentos posee la longitud del segmento. Los bits de presencia y modificación no son necesarios, ya que se gestionan en la página. Pueden usarse otros bits de control para compartición y protección. La entrada de la tabla de páginas es, la misma que se usa en un sistema de paginación pura. Cada número de página se convierte en el número de marco correspondiente si la página está presente en la memoria. El bit de modificación indica si se necesita escribir la página en el disco cuando se asigna el marco a otra página. Ventajas Posee todas las ventajas de la paginación y la segmentación: Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la compartición y enlace. Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. Se elimina el problema de la fragmentación externa y la necesidad de compactación. Inconvenientes Las tres componentes de la dirección y el proceso de formación de direcciones hace que se incremente el coste de su implantación. El coste es mayor que en el caso de de segmentación pura o paginación pura. Se hace necesario mantener un número mayor de tablas en memoria, lo que implica un mayor coste de almacenamiento. Sigue existiendo el problema de fragmentación interna de todas (o casi todas) las páginas finales de cada uno de los segmentos. Bajo paginación pura se desperdicia solo la última página asignada, mientras que bajo segmentación y paginación combinadas, el desperdicio puede ocurrir en todos los segmentos asignados. 50

50 Técnicas de gestión de memoria Una de las técnicas más simples para la gestión de la memoria es la partición, la cual se ha ido usando con diferentes variantes en algunos sistemas ahora obsoletos. Por su parte, la paginación simple y la segmentación simple, no se usan en solitario. Actualmente, la gestión de memoria requiere memoria virtual. Ésta se basa en paginación o segmentación. Técnica Descripción Ventajas Desventajas ESQUEMAS DE ASIGNACIÓN CONTIGUA Partición estática La memoria principal (MP) se divide en un conjunto de particiones estáticas durante la generación del sistema. Un proceso se puede cargar en una partición de menor o igual tamaño. Partición dinámica Las particiones se crean dinámicamente, de forma que cada proceso se carga en una partición de su mismo tamaño. ESQUEMAS DE ASIGNACIÓN NO CONTIGUA Paginación simple Segmentación simple ESQUEMAS CON MEMORIA VIRTUAL Memoria virtual paginada Memoria virtual segmentada La MP se divide en un conjunto de marcos de igual tamaño. Cada proceso se divide en páginas de igual tamaño que los marcos. Un proceso se carga situando todas sus páginas en marcos libres que no tienen porque ser contiguos. Cada proceso se divide en segmentos. Un proceso se carga situando todos sus segmentos en particiones dinámicas pero no necesariamente continuas. Igual que la paginación simple, excepto que no hace falta cargar todas las páginas de un proceso. Las páginas no residentes que se necesiten se traerán más tarde, automáticamente. Igual que la segmentación simple, excepto que no es necesario cargar todos los segmentos de un proceso. Los segmentos no residentes que sean necesarios se traerán más tarde, automáticamente. Sencilla de implementar, poca sobrecarga del SO. No hay fragmentación interna, uso más eficiente de la memoria principal. No tiene fragmentación externa. No tiene fragmentación interna. No hay fragmentación externa. Alto grado de multiprogramación. Gran espacio virtual para el proceso. No hay fragmentación interna. Alto grado de multiprogramación. Gran espacio virtual para el proceso. Soporte de protección y compartición. Uso ineficiente de la memoria por culpa de la fragmentación interna (el número de procesos activos es fijo) Uso ineficiente del procesador, ya que se usa la compactación para contrarrestar la fragmentación externa. Hay una pequeña cantidad de fragmentación interna. Mejora la utilización de la memoria y reduce la sobrecarga comparada con la partición dinámica Sobrecarga por gestión compleja de memoria. Sobrecarga por gestión compleja de memoria. Tabla 5: Resumen de las técnicas de gestión de memoria 51

51 4. TLB (Translation Lookaside Buffer) 4.1. Introducción En casi todos los esquemas de paginación, las tablas de páginas se mantienen en la memoria, debido a su gran tamaño. Este diseño podría tener un impacto enorme en el desempeño. Por ejemplo, consideremos una instrucción que copia un registro en otro. Si no hay paginación, la instrucción sólo efectúa una referencia a la memoria, para traer la instrucción. Si hay paginación, se requerirán referencias adicionales a la memoria para tener acceso a la tabla de páginas. Puesto que la velocidad de ejecución por lo general está limitada por la velocidad con que la CPU puede sacar instrucciones y datos de la memoria, tener que hacer dos referencias a la tabla de páginas por cada referencia a la memoria reduce el desempeño en 2/3. En tales condiciones, nadie usaría paginación. Los diseñadores de computadores han sido conscientes de este problema desde hace años, y han ideado una solución basada en la observación de que los programas tienden a hacer un gran número de referencias a un número pequeño de páginas, y no al revés. Por lo tanto, sólo una fracción pequeña de las entradas de la tabla de páginas se lee mucho; el resto casi no se usa. La solución que se encontró consiste en equipar a los computadores con un pequeño dispositivo de hardware que traduce direcciones virtuales a físicas, sin pasar por la tabla de páginas. Este dispositivo, se trata de una caché de acceso rápido denominada TLB (Translation Looakside Buffer) Soporte hardware a las tablas de páginas (TP) Registros dedicados Como la TP de cada proceso puede llegar a ser demasiado grande, se buscan mecanismos que permitan acelerar el tiempo de búsqueda en esa información. La solución más simple es la utilización de un conjunto de registros dedicados (no usar tabla de paginación de cada proceso). El CPU dispatcher será el encargado de cargar y actualizar la información de estos registros con cada contexto. El uso de registros para la TP es únicamente satisfactorio si la tabla es razonablemente pequeña. 52

52 Registros asociativos (TLB) Si bien el esquema de memoria virtual basado en paginación, expuesto anteriormente, funciona correctamente, presenta serios problemas a la hora de implementarlo directamente. Estos problemas surgen debido a la necesidad de mantener las TP en memoria principal. Esto conlleva problemas de eficiencia y de consumo de espacio. Por lo que se refiere a los problemas de eficiencia, dado que para acceder a la posición de memoria solicitada, la MMU debe consultar la entrada correspondiente de la TP, se producirán dos accesos a memoria por cada acceso real solicitado por el programa. Esta sobrecarga es intolerable, ya que reduciría a la mitad el rendimiento del sistema. Para solventar este problema, la MMU incluye internamente una especie de caché de traducciones llamada TLB (Translation Lookaside Buffer), cuyo modo de operación se mostrará en el siguiente apartado Funcionamiento Cada referencia a la memoria virtual genera normalmente dos accesos a la memoria: 1) Para obtener la dirección física. 2) Para acceder a los datos. Ante ello, la memoria virtual podría causar el efecto de doblar el tiempo de acceso a la memoria. Para solucionarlo, generalmente se usa una caché especial para las entradas de la tabla de páginas, conocida como buffer de traducción adelantada (TLB). Su funcionamiento es similar a una caché. Ésta guarda las entradas de la tabla de páginas a las que se haya hecho referencia recientemente. Un TLB es una caché que almacena sólo las correspondencias de tablas de páginas. Por tanto, cada etiqueta de las entradas del TLB posee una parte del número de página virtual, y un número de página físico: Dirección virtual Flags (Dirty, Protección, Uso) Dirección física Figura 23: Formato de la etiqueta de la entrada del TLB 53

53 4.3. Diseño Para hacer que un sistema de paginación sea aplicable en la práctica es necesario que la mayoría de los accesos a memoria no impliquen una consulta a la tabla de páginas, sino que únicamente requieran el acceso a la posición solicitada. De esta forma, el rendimiento será similar al de un sistema sin paginación. Como se comentó previamente, esto se logra mediante el uso del TLB. Se trata de una pequeña memoria asociativa interna a la MMU que mantiene información sobre las últimas páginas accedidas. Cada entrada en el TLB es similar a la de la tabla de páginas (número de marco, protección, bit de referencia, etc.), pero incluye también el número de la página para permitir realizar una búsqueda asociativa. Existen dos alternativas en el diseño de un TLB dependiendo de si se almacenan identificadores de proceso o no. TLB sin identificadores de proceso. La MMU accede al TLB sólo con el número de página. Por tanto, cada vez que hay un cambio de proceso el SO debe invalidar el TLB ya que cada proceso tiene su propio mapa. TLB con identificadores de proceso. La MMU accede al TLB con el número de página y un identificador de proceso. En cada entrada del TLB, por tanto, se almacena también este identificador. La MMU obtiene el identificador de un registro del procesador. El SO debe encargarse de asignarle un identificador a cada proceso y de rellenar este registro en cada cambio de proceso. De esta forma, no es necesario que el sistema operativo invalide el TLB en cada cambio de proceso, pudiendo existir en el TLB entradas correspondientes a varios procesos. Tradicionalmente, el TLB ha sido gestionado directamente por la MMU sin intervención del SO. La MMU consulta el TLB y, si se produce un fallo debido a que la traducción de esa página no está presente, la propia MMU se encarga de buscar la traducción en la tabla de páginas e insertarla en el TLB. De hecho, el TLB es casi transparente al SO, que sólo debe encargarse en cada cambio de proceso de solicitar a la MMU su volcado y, en caso de que no use identificadores de proceso, su invalidación. Cabe destacar que es necesario realizar un volcado del TLB a la tabla de páginas, ya que la información de los bits de página accedida o modificada se actualiza directamente en el TLB, pero no en la tabla de páginas. Algunos procesadores (como, por ejemplo, MIPS o Alpha) tienen un diseño alternativo en el que se traspasa parte de la gestión del TLB al SO. A este esquema se le denomina TLB gestionado por software (ver apartado 7.6). La MMU se encarga de buscar la traducción en el TLB, pero si no la 54

54 encuentra produce una excepción que activa al SO. Éste se debe encargar de buscar a mano en la tabla de páginas e insertar en el TLB la traducción. Cabe destacar que, con este esquema, la MMU se simplifica considerablemente, ya que no tiene que saber nada de las tablas de páginas. Además, proporciona más flexibilidad, ya que el SO puede definir las tablas de página a su conveniencia, sin ninguna restricción impuesta por el hardware. Como contrapartida, el sistema será menos eficiente, ya que parte del proceso de traducción se realiza por software Acceso Figura 24: Uso del TLB En cada referencia se busca el número de página virtual en el TLB. Si se acierta, el número de página física se usa para formar la dirección y el correspondiente bit se activa. Si por el contrario no se encuentra, habrá que determinar si es un fallo en el TLB o bien un fallo de página. Si la página está en memoria, el TLB indica que no contiene la traducción. En estos casos, la CPU gestiona el fallo de TLB cargando la traducción de la tabla de páginas en el TLB y después repite la referencia. Si la página no se encuentra en memoria, el TLB indicará que se trata de un fallo de página. Aquí la CPU invocaría al SO lanzando una excepción. Como el TLB tiene menos entradas que el número de páginas de la memoria principal, los fallos de TLB serán más frecuentes que los fallos de página. 55

55 4.5. Reemplazo Después del fallo de TLB, se necesitará seleccionar una entrada del TLB para ser reemplazada. Como la entrada del TLB contiene los bits de referencia y suciedad; se activa cuando se escribe en la página, si el SO escoge una cierta página para ser reemplazada, este bit indicará si se debe guardar la página antes de ser reemplazado su lugar por otra página, se deben copiar en la entrada de la tabla de páginas correspondiente. Estos bits son la única parte de una entrada en el TLB que pueden cambiar. Usando la estrategia de escritura diferida (es decir, copiar las entradas cuando ocurre un fallo en vez de copiarlas siempre que se haga una escritura) es muy eficiente, ya que la tasa de fallos del TLB pasa a ser muy pequeña. Existen sistemas que utilizan otras técnicas para los bits de referencia y suciedad, eliminando la necesidad de escribir en el TLB excepto en el caso de cargar una nueva entrada después de un fallo. Figura 25: Funcionamiento de la paginación con TLB 56

56 En la figura 25 se muestra un diagrama de flujo representando el uso del TLB, obviando que el SO puede pasar a ejecutar otro proceso mientras se realiza la E/S a disco. Aquí se puede apreciar que si una página no está en memoria principal, una interrupción de fallo de página llamará a la rutina de gestión de fallos de página. Debido al principio de cercanía, la mayoría de las referencias a la memoria virtual se situarán en las páginas usadas recientemente. Por consiguiente, la mayoría de las referencias van a involucrar a las entradas de la tabla de páginas en la caché Gestión de los fallos de página y del TLB La traducción de direcciones virtuales a direcciones físicas usando un TLB es fácil en el caso de acertar en el TLB, gestionar los fallos de éste y los fallos de página es más complejo. Un fallo de TLB, tal como se ha mencionado anteriormente, ocurre cuando ninguna entrada del TLB corresponde a una dirección virtual pedida. Este fallo puede indicar: 1) La página está en memoria y basta con crear la entrada en el TLB. 2) La página no está en memoria y se tiene que transferir el control al SO para gestionar el fallo. Para determinar cuál de los dos casos ha ocurrido, basta con procesar un fallo de TLB y buscar una entrada de la tabla de páginas para poner en el TLB. Si dicha página tiene el bit de validez desactivado, implica que no está en memoria principal, dando lugar a un fallo de página. En cambio si el bit de validez está activado, se puede copiar el número de página física de la entrada de la tabla de páginas y usarlo para crear la entrada en el TLB. Si bien el fallo de TLB se puede solucionar mediante hardware o software, el fallo de página necesita usar excepciones para interrumpir el proceso activo, transferir el control al SO y más tarde reanudar el proceso interrumpido. La excepción del fallo de página se debe activar al final del ciclo en que se da el acceso a memoria, para que en el siguiente ciclo se empiece el procesamiento de la excepción y no la continuación de la ejecución de las instrucciones. Este último tipo de excepciones son extremadamente difíciles de resolver si ocurre por accesos a datos, ya que ocurren en medio de instrucciones, éstas no se pueden completar antes de tratar la excepción y, después de haber tratado la excepción, se debe volver a ejecutar la instrucción como si no hubiese ocurrido nada. 57

57 Cabe mencionar que debido a que el TLB es un subconjunto de la tabla de páginas accedido en cada ciclo, las violaciones de protección son también excepciones del TLB. Un conjunto de valores en el registro de causa indicarán las violaciones de protección. Como podría ocurrir al intentar escribir estando el bit de escritura desactivado. Para poder avisar del error, el SO puede acceder al TLB o a la entrada de la tabla de páginas de la página virtual correspondiente y determinar así los permisos de acceso TLB gestionado por software Se da por hecho que toda máquina que tiene memoria virtual paginada tiene tablas de páginas que el hardware reconoce, más un TLB. En este diseño, el hardware de la MMU realiza por completo la administración y el manejo de fallos del TLB. Sólo se salta al SO cuando una página no está en la memoria. En el pasado siempre era válida dicha suposición, pero máquinas RISC (SPARC, MIPS, Alpha y HP PA) efectúan prácticamente toda la administración de páginas por software. En dichas máquinas, el SO carga de forma explícita las entradas del TLB. Cuando no se encuentra una página en el TLB, en lugar de que la MMU consulte directamente la TP para hallar y obtener la referencia de página requerida, simplemente genera un fallo de TLB y deja que el SO resuelva el problema. El SO tendrá que encontrar la página, desalojar una entrada del TLB, cargar la nueva y reiniciar la instrucción que causó el fallo. Y, como es obvio, todo ello debe poder hacerse con muy pocas instrucciones, ya que los fallos de TLB, tal como ya se ha indicado, ocurren con más frecuencia que los de página. Si el TLB tiene un tamaño razonable (digamos que unas 64 entradas) se consigue que la tasa de fallos no sea muy alta y, la administración del TLB por software alcanza una eficiencia aceptable. Con ello se consigue simplificar muchísimo la MMU y poder así contar con más espacio en el chip de la CPU para cachés y otros recursos. Se han desarrollado diversas estrategias para mejorar el rendimiento en máquinas que efectúan la administración del TLB por software. Una de ellas busca reducir los fallos del TLB y, al mismo tiempo, disminuir el coste de los que sí ocurran. Para rebajar el número de fallos de TLB, en algunas ocasiones el SO puede utilizar su intuición para determinar qué páginas tienen la probabilidad más alta de utilizarse a continuación y precargar entradas en el TLB para ellas. Por ejemplo, si un proceso cliente envía un mensaje a un proceso servidor que está en la misma máquina, es muy probable que el servidor tenga que ejecutarse pronto. Sabiendo esto, el sistema puede determinar, mientras procesa la instrucción para enviar información, dónde están las 58

58 páginas de código, datos y pila del servidor, y colocar entradas para ellas en el TLB antes de que puedan causar fallos de TLB. La forma normal de procesar un fallo de TLB, ya sea por hardware o por software, es consultando la tabla de páginas y realizar las operaciones de indexación necesarias para localizar la página a la que se hizo referencia. Lo malo de realizar la búsqueda por software es que las páginas que contienen la tabla de páginas podrían no estar en el TLB, lo cual causaría fallos de TLB adicionales durante el procesamiento. Estos fallos pueden reducirse si se mantiene una caché grande de software (por ejemplo, de 4KB) con entradas de TLB, en un lugar fijo cuya página siempre se conserve en el TLB. Si el SO consulta la caché de software, podrá reducir considerablemente los fallos de TLB Indexación TLB El TLB únicamente contiene algunas de las entradas de la tabla de páginas completa, por lo que no se puede indexar el TLB sólo por el número de página. En su lugar, cada entrada del TLB debe incluir el número de página junto con la entrada completa a la tabla de páginas. Esta técnica se conoce como correspondencia asociativa (cada número de página se puede colocar en cualquier lugar de la caché) y contrasta con la correspondencia directa usada para buscar en la tabla de páginas: Figura 26: Búsqueda directa y asociativa en entradas de la tabla de páginas 59

59 Por otro lado, la memoria virtual debe interaccionar con la caché de la memoria principal: Figura 27: Traducción con TLB y uso de caché Una dirección virtual suele estar formada por el número de página y el desplazamiento. Primero, el sistema de memoria consulta el TLB para ver si encuentra la entrada de la tabla de páginas. Si es así, la dirección real/física se genera combinando el número de marco y el desplazamiento. Si no, se accede a la entrada de la tabla de páginas. A continuación, se consulta la caché para ver si está el bloque con dicha palabra. Si lo está, es devuelto a la CPU. En caso contrario, se coge la palabra de la memoria principal Tamaño de página El tamaño de página es un elemento que influye en el rendimiento del sistema. Si son muy pequeños se evita la fragmentación, pero las tablas de página aumentarían mucho en tamaño, y aumentaría el número de intercambios entre memoria principal y disco. A medida que crece el tamaño de los procesos en la memoria y decrece su cercanía 5, disminuye el porcentaje de acierto en los accesos a la TLB. En esta situación, la TLB puede llegar a generar un cuello de botella del rendimiento. Una forma de aumentar el rendimiento de la TLB es usar mayores TLB y con más entradas. No obstante, el tamaño de la TLB afecta a aspectos tales como la caché de memoria principal y el número de accesos a la memoria por ciclo de instrucción. Una alternativa sería usar tamaños de 5 Principio de cercanías: las referencias a memoria tienden a agruparse. Se realiza el agrupamiento de las lecturas de memoria por medio de la unidad central de procesamiento. Las mismas, ya sean para instrucciones o para leer datos, se mantienen por lo general dentro de grupos de direcciones relativamente cercanas entre sí. 60

60 página grandes para que cada entrada a la tabla de páginas de la TLB haga referencia a un bloque de memoria mayor. Sin embargo, el uso de tamaño de páginas grandes puede suponer una degradación del rendimiento. Debido a ello, diferentes diseñadores han investigado el uso de diferentes tamaños de páginas en varias arquitecturas, y se ha visto que múltiples tamaños de página proporcionan la suficiente flexibilidad para usar eficazmente un TLB Entrada TLB El TLB suele contener un número pequeño de entradas (casi nunca más de 64). Cada entrada contiene información sobre una página: Bit de validez Nº de página Bit de modificado Bit de protección Nº de marco de página Valid Virtual page Modified Protection Page frame RW R X RW RW R X RW R X 43 Tabla 6: Ejemplo de entradas del TLB Valores típicos de parámetros para un TLB Tamaño de bloque Tiempo de acierto Penalización de fallos 4 32 bytes (una entrada de página) 1 ciclo de reloj ciclos de reloj Frecuencia de fallos 0.01% 2% Tamaño TLB Tabla 7: Valores típicos de parámetros para TLB Además de estos parámetros, la correspondencia de traducciones a entradas en el TLB varía considerablemente. Muchos sistemas usan TLB totalmente asociativo (un bloque puede estar en cualquier parte del TLB) porque se tiene una tasa de fallos más baja, y además al ser el TLB pequeño, el coste de una correspondencia asociativa no es muy elevado. Pero se presenta el problema de que los fallos de TLB son más frecuentes que los de página, y se desea tratarlos de 61

61 forma barata. Por ello, muchos sistemas ofrecen soporte para escoger aleatoriamente la entrada a reemplazar. Si bien, a menudo el TLB se presta a ser totalmente asociativo, se suele implantar con frecuencia la ubicación asociativa por conjuntos (el bloque puede encontrarse en un conjunto restringido de posiciones) para las cachés y el TLB, donde el acceso combina indexación y la búsqueda de un pequeño conjunto. En la mayoría de las máquinas medianas se emplea asociatividad por conjuntos Integración de la memoria virtual, los TLBs y las cachés A continuación, se exponen las posibles combinaciones de sucesos en memoria virtual, caché y TLB, presuponiendo que todas las direcciones de memoria se traducen a direcciones físicas antes de acceder a caché (Ejemplo de esta organización de memoria en la figura 29: MIPS R2000). Caché TLB Memoria virtual Posible? Si es así, en qué circunstancias? Fallo Acierto Acierto Posible, pero no se comprueba la tabla de páginas si acierta en el TLB Acierto Fallo Acierto Fallo de TLB, aunque la entrada está en la tabla de páginas; después de reintentar se acierta en la caché Fallo Fallo Acierto Fallo de TLB, aunque la entrada está en la tabla de páginas; después de volver a probar se acierta en la caché Fallo Fallo Fallo Fallo de TLB y de página; después de reintentar se tiene que fallar en la caché Fallo Acierto Fallo Imposible: no se puede tener una traducción en el TLB de una página que no está en memoria Acierto Acierto Fallo Imposible: no se puede tener una traducción en el TLB de una página que no está en memoria Acierto Fallo Fallo Imposible: no se pueden tener una datos en la caché que no se encuentren en la memoria Tabla 8: Posibles sucesos entre memoria virtual, caché y TLB También es posible que la CPU indexe a la caché con una dirección virtual. Es lo que se conoce como caché direccionable virtualmente. En este tipo de cachés, el acceso a la caché y al TLB 62

62 ocurre en paralelo. Pero en caso de fallo de caché, el procesador debe traducir la dirección a una dirección física para poder ir a buscar el bloque de caché a la memoria principal. Al acceder a caché con una dirección virtual y existiendo compartición de páginas entre programas, se puede producir aliasing (efecto alias). Ello ocurre cuando se tienen dos direcciones virtuales para la misma página. Llegando a provocar que una palabra de una página esté en la caché en dos posiciones diferentes, cada una asociada a una dirección virtual diferente. Para reducir el efecto, se introducen limitaciones en el diseño de la caché y del TLB, o bien el propio SO se encarga de evitar que ocurra. Otra opción serían las cachés indexadas con direcciones virtuales que usan etiquetas de direcciones físicas. De esta manera, se consiguen fusionar las ventajas de ambas alternativas. Aquí la caché y el TLB se acceden en paralelo, y las etiquetas de las direcciones físicas de la caché son comparadas con la dirección física del TLB. 63

63 4.12. IMPLEMENTACIONES Introducción El primer ordenador que dispuso de memoria virtual era el Atlas, propuesto por Kilburn. Ello ocurrió en 1963, el año anterior de que fuese anunciado el IBM 360. IBM pensaba incluir memoria virtual en la siguiente generación (Sistema/370), pero el SO no estaba preparado en Debido a ello, la memoria virtual se anunció para la familia 370 en 1972, y fue en esta máquina donde se acuñó el término de buffer de traducciones anticipadas (TLB) VAX 11/780 Máquina CISC sucesora de la PDP 11, producida por Digital Equipment Corporation. Su nombre original era VAX 11 (Virtual Address Extended PDP 11). Lanzada el 25 de octubre de 1977, fue la primera máquina comercial de arquitectura de 32 bits, lo que la convierte en un hito destacable en la historia de la computación. La primera VAX 11/780 fue instalada en Carnegie Mellon University. Tamaño de página de 512 bytes Entrada Tabla de páginas de 4 bytes TLB de 512 bytes asociativa por conjuntos de 2 vías Pasos: 1) Envío del índice de la dirección virtual 2) Comprobación de válido y tipo de acceso a memoria 3) Comprobación de etiquetas 4) Envío de la dirección física a través del multiplexor 5) Combinación del número y desplazamiento de página Figura 28: TLB del VAX 11/780 64

64 MIPS R2000 MIPS (Microprocessor without Interlocked Pipeline Stages), es una arquitectura de procesadores tipo RISC desarrollada por MIPS Computer Systems Inc. Los diseños de MIPS se usan en las estaciones de trabajo de SGI 6, y tienen mucha implantación en sistemas empotrados, dispositivos que soportan Windows CE, y en los routers de Cisco. La consola Nintendo 64, la Sony PlayStation, la Sony PlayStation 2, y la consola portátil Sony PSP usan procesadores MIPS. A finales de los 90, se estimó que uno de cada tres chips tipo RISC que salieron al mercado estaban basados en MIPS. El primer diseño de MIPS Computer Systems Inc se lanzó en 1985 y es conocido como R2000, se pasó a mejorar el diseño con el R3000 en El TLB del MIPS R2000 que se usó para la DECStation 3100 es muy sencillo, pero posee la mayoría de las características de los actuales TLBs. El sistema de memoria usa páginas de 4KB y un espacio de direcciones de 32 bits, por lo que el número de página virtual es de 20 bits. La dirección física es del mismo tamaño que la dirección virtual. El TLB contiene 64 entradas, es totalmente asociativo y es compartido entre referencias a instrucciones y a datos. Cada entrada consta de 64 bits y dispone de 20 bits de etiqueta (que son el número de página de virtual de dicha entrada en el TLB), el número de página física (20 bits), un bit de validación, y otros bits de contabilidad Figura 29: TLB del MIPS R Silicon Graphics, Inc., también conocida como SGI, o históricamente citada como Sistemas Computacionales Silicon Graphics (SGCS), comenzó como fabricante de terminales gráficas en La industria de las estaciones de trabajo es el negocio principal de SGI a través de su historia. 65

65 La figura 29 muestra la organización del TLB y una de las cachés del DECStation El diagrama adjunto en la figura 30 muestra la gestión de las lecturas. Si bien la caché es de correspondencia directa, el TLB es totalmente asociativo. Esto implica que cada etiqueta del TLB se compare con el índice, ya que la entrada a buscar puede estar en cualquier entrada del TLB. Si el bit de validez correspondiente a la entrada está activo, el acceso al TLB es un acierto, y el número de página junto con el desplazamiento forman el índice que se usará para acceder a la caché. Figura 30: Uso TLB en la DECStation 3100 Anteriormente se muestra el proceso de las lecturas con escritura a través en el TLB y la caché de la DECStation Si se genera un acierto, se podrá acceder a la caché con la dirección física. Si la operación es una escritura, se sobrescribe la entrada de la caché y los datos se envían al buffer de escrituras. Para una lectura, la caché genera un acierto o fallo y suministra los datos o bien causa un bloqueo. Cabe destacar que un acierto en el TLB y en la caché son sucesos diferentes. A su vez, un acierto en la caché sólo ocurrirá cuando haya un acierto en el TLB, lo que equivale a decir que los datos están en la memoria. 66

66 Gestión de los fallos En el MIPS R2000, tanto el fallo de TLB como el de página tienen la misma señal en el TLB. Para poder distinguir entre ambos casos, el registro de causa contiene dos valores diferentes. Un valor indica que no hay ninguna entrada en el TLB, mientras que el otro determina que la entrada en el TLB existe pero que la página no se encuentra en memoria. Ante el hecho de que la excepción producida porque la entrada no está en el TLB es más frecuente, el SO actualiza el TLB sin examinar la entrada y ejecuta de nuevo la instrucción después de esta excepción. Si se produce un fallo de página ocurre otra excepción. Este método consigue que el fallo del TLB sea más rápido, pero penalizando el posible fallo de página Intel Intel I960 El primer procesador superescalar, el i960, fue diseñado por Intel en 1989, y podía ejecutar dos instrucciones por ciclo de reloj. Ya en 1995, lo normal era encontrar diseños de cuatro instrucciones por ciclo, y aunque aparecieron algunos como el Power PC capaces de ejecutar hasta seis, entre la complejidad y el choque frontal que supone con la forma en que están escrito los programas, el mercado volvió sobre sus pasos y se encuentra instalado en factores de superescalaridad de entre tres y cuatro Familia Pentium Esquema En la familia Intel 386/486/Pentium, las páginas son de 4 KB y el espacio de direcciones virtuales es de 4 GB. Una tabla de páginas está restringida a 1024 filas, pero un proceso puede tener hasta 1024 tablas distintas. Cada tabla de páginas sirve para traducir las direcciones de un bloque contiguo de 4 MB de memoria en el espacio de direcciones virtuales. El directorio y las tablas de páginas se almacenan en memoria real en una Intel 386. Con ello, se reduce el tiempo para realizar un cambio de contexto, pero se multiplica por 3 el costo del acceso a la memoria virtual. En efecto cada acceso a la memoria virtual requiere un acceso real en el directorio para determinar la tabla de páginas, otro acceso real en la tabla de páginas y 67

67 finalmente el acceso real de la palabra solicitada por el proceso. Este nuevo sobrecosto es escandalosamente inaceptable. Para acelerar los accesos a la memoria, el hardware del computador posee un TLB. Sin él, se producirían accesos a dos tablas en la memoria principal (directorio y tabla de páginas), lo que supondría un alto grado de lentitud. Así pues, Intel introdujo dentro del microprocesador una pequeña memoria caché asociativa ultrarrápida denominada TLB. Éste tendrá la traducción de las direcciones lineales a físicas de las últimas páginas (de 32 a 128. Por ejemplo, en el 386 son 32) manejadas. El TLB es una caché asociativa de cuatro vías. Como cada página tiene una longitud de 4KB, esto alcanza a 128KB. Para muchos sistemas multitarea, el TLB tendrá un porcentaje de éxito (hit) del 98%. Esto significa que el procesador deberá acceder a las dos tablas el 2% del tiempo. El TLB es una caché de acceso por contenido: Etiquetas: dirección lineal. Datos asociados: dirección física. Cada vez que haya que realizar una traducción se consulta el TLB, y si está guardada, se obtiene en muy poco tiempo. El Pentium contiene dos TLBs independientes de 32 entradas, uno para la caché y otro para la de datos. Maneja 64 páginas y 256 KBytes de memoria. Estos TLBs sólo son visibles para los programas del SO con nivel de prioridad 0. Por su parte, tal como se mostrará posteriormente, los registros TR6 y TR7 permiten leer y escribir en el TLB. Si se desea, se puede llegar a invalidar una entrada concreta del TLB, para ello hay que hacer uso de la instrucción INVLPG. Por su parte, los procesadores Pentium con tecnología MMX 7 contienen 64 entradas en el TLB de datos totalmente asociativas, mientras que en el TLB de instrucciones posee 32 entradas, también, completamente asociativas. Ambos TLBs pueden soportar tanto páginas de 4KBytes como de 4MBytes. 7 La tecnología MMX (MultiMedia extensions) fue introducida en 1997 por Intel en sus procesadores Pentium para mejorar la manipulación de imágenes y tratamiento de codecs de audio/video, mediante un conjunto de 57 nuevas instrucciones, así como una nueva capacidad denominada SIMD (Single Instrucction Multiple Data). 68

68 Figura 31: Diagrama de bloques del procesador Pentium Paginación Segmentación La unidad de manejo de memoria (MMU) consiste en una unidad de segmentación y una unidad de paginado (nuevo en este microprocesador). La segmentación permite el manejo del espacio de direcciones lógicas agregando un componente de direccionamiento extra, que permite que el código y los datos se puedan reubicar fácilmente. El mecanismo de paginado opera por debajo y es transparente al proceso de segmentación, para permitir el manejo del espacio de direcciones físicas. Cada segmento se divide en uno o más páginas de 4 KB. Para implementar un sistema de memoria virtual (aquél donde el programa tiene un tamaño mayor que la memoria física y debe cargarse por partes (páginas) desde el disco rígido), el permite seguir ejecutando los programas después de haberse detectado fallos de segmentos o de páginas. Si una página determinada no se encuentra en memoria, el se lo indica al SO mediante la excepción 14, luego éste carga dicha página desde el disco y finalmente puede seguir ejecutando el programa, como si hubiera estado dicha página todo el tiempo. Como se puede observar, este proceso es transparente para la aplicación, por lo que el programador no debe preocuparse por cargar partes del código desde el disco ya que se encarga el SO con la ayuda del microprocesador de realizarlo. 69

69 Funcionamiento del hardware de paginación. El hardware de paginación opera de la siguiente manera. La unidad de paginación recibe una dirección lineal de 32 bits procedente de la unidad de segmentación. Los 20 bits más significativos son comparados con las 32 entradas del TLB para determinar si la entrada de la tabla de páginas está en el caché. Si está (caché hit), entonces se calcula la dirección física de 32 bits y se la coloca en el bus de direcciones. Si la entrada de la tabla de páginas no se encuentra en el TLB (caché miss), el leerá la entrada del directorio de páginas que corresponda. Si P=1 (la tabla de páginas está en memoria), entonces el leerá la correspondiente entrada de la tabla de páginas y pondrá a uno el bit accedido de la entrada del directorio de páginas. Si P=1 en la entrada de la tabla de páginas, indicando que la página se encuentra en memoria, el actualizará los bits Accedido y Dirty según corresponda y luego accederá a la memoria. Los 20 bits más significativos de la dirección lineal se almacenarán en el TLB para futuras referencias. Si P=0 para cualquiera de las dos tablas, entonces el procesador generará una excepción 14 (Fallo de Página). El procesador también generará una excepción 14, si la referencia a memoria viola los atributos de protección de página (bits U/S y R/W) (por ejemplo, si el programa trata de escribir a una página que es de sólo lectura). En el registro CR2 se almacenará la dirección lineal que causó el fallo de página. En la pila se pondrá un valor de 16 bits que sirve para que el SO sepa por qué ocurrió la excepción. El formato de esta palabra es: Bits 15 3: indefinido. Bit 2: vale 1 si el procesador estaba ejecutando en modo usuario. Vale 0 si el procesador estaba ejecutando en modo superusuario. Nótese que un acceso a una tabla de descriptores siempre se considera modo superusuario, por más que el programa se esté ejecutando en el nivel 3. Bit 1: vale 1 si el procesador estaba por realizar una escritura. Vale 0 si tenía que realizar una lectura. Bit 0: vale 1 si hubo una violación de protección en la página. Vale 0 si la página no estaba presente. 70

70 Registros de control usados para la paginación Figura 32: Registros de control para la paginación en el procesador Pentium El registro CR2 es el que mantiene la dirección lineal de 32 bits que causó el último fallo de página detectado por el microprocesador. El registro CR3 contiene la dirección física inicial del directorio de páginas. Los doce bits menos significativos del registro siempre están a cero para que siempre el directorio de páginas esté dentro de una página determinada. La operación de carga mediante la instrucción MOV CR3, reg o bien un cambio de tareas que implique un cambio de valor del registro CR3 hace que se eliminen las entradas de la caché de la tabla de páginas. Registros de test Se utilizan dos registros para verificar el funcionamiento de la CAM 8 en el TLB. TR6 es el registro de comando del test, mientras que TR7 es el registro de datos que contiene el dato proveniente del TLB. El TLB guarda las entradas de tabla de página de uso más reciente en una caché que se incluye en el chip, para reducir los accesos a las tablas de páginas basadas en RAM. 8 CAM (Content Addressable Memory Memoria de Contenido Direccionable). Al contrario de las memorias estándar (memorias de acceso aleatorio o RAM) en las que el usuario introduce una dirección de memoria y la RAM devuelve los datos almacenados en esa dirección, una CAM está diseñada de manera que el usuario proporciona los datos y la CAM busca en toda la memoria para ver si esos datos están almacenados en alguna posición. Si los datos son encontrados, la CAM devuelve una lista de una o varias direcciones en las que la información fue encontrada (en algunas arquitecturas, también devuelve los propios datos buscados, u otros tipos de información). Es decir, una CAM es la expresión en hardware de lo que en términos de software se denominaría un array asociativo. 71

71 Figura 33: Registros TLB TR6 TR6: Registros de comandos TLB. Contiene direcciones virtuales, código/datos seleccionados (CD), operación (OP) y los siguientes bits de estado: válido (V), dirty (D), usuario (U), escritura (W) y tamaño de página (PS). El bit V indica si la entrada en el TLB es válida o no. El bit D muestra si se efectúo un acceso de escritura en la página. El bit U apunta al nivel de privilegios que el procesador debe tener para acceder a la página. El bit W es uno de los factores para determinar la protección de lectura/escritura de la página. El bit PS especifica el tamaño de la página para su entrada en el TLB. El bit CD determina si se accede a datos TLB o bien a comandos. El bit OP distingue entre un ciclo de lectura y uno de escritura. Los bits W, D y PS son definidos únicamente para el TLB de datos. Valores de los bits para TR6 Bit V Válido/Inválido 0 Inválido 1 Válido Bit D Acceso de escritura a la página? 0 No 1 Sí Bit U Nivel de privilegios para acceder 0 PL=0,1,2,3 1 PL=0 Bit W Permitida escritura? 0 No escrituras, sólo lecturas 1 Permite escrituras Bit PS Tamaño de página 0 4 KBytes 1 4 MBytes Tabla 9: Valores de los bits del registro TR6 de Pentium 72

72 TR7 TR7: Registros de datos del TLB. En el procesador Pentium (75/90/100/120/133/150/166/200) contiene 31:12 bits de la dirección física, el indicador de acierto (H: hit), dos bits al puntero de entrada y los bits de estado. Estos últimos incluyen los dos bits de atributos de paginación (PCD y PWT), y LRU (3 bits: L0, L1 y L2). Cuando se lee este último campo se obtiene el valor de los tres bits usados en el algoritmo de reemplazo LRU de la caché. El bit PCD (salida de deshabilitación de página de caché) refleja el estado del bit de atributo PCD en la entrada de tabla de páginas o entrada del directorio de páginas. El bit PWT (escritura de página a través de la salida) indica el estado del bit de atributo PWT en la entrada de la tabla de páginas o en la entrada del directorio de páginas. Los bits LRU determinan que entrada deberá ser reemplazada según el algoritmo LRU. En los procesadores Pentium con tecnología MMX, el puntero de entrada pasa de tener dos bits a seis. Éstos determinan cuál de las 64 entradas escribirá en la TLB de datos durante una escritura. Los cinco bits de entrada de menos peso indican cuál de las 32 entradas escribirán en el TLB de comandos durante una escritura. El bit H es el indicador de acierto. Este bit se debe poner a 1 durante una escritura. Mientras que si en una lectura, la entrada a la dirección lineal marca una entrada válida en el TLB, el bit H se modificará con un valor igual a 1. Los dos bits de entrada determinan cuál de las cuatro vías escribirá en el TLB en el proceso de escritura. En la lectura, éstos indicarán la vía que se ha utilizado para leer un bit. TR6 y TR7 son registros lectura/escritura. Registros Los descriptores de la caché y el TLB son proporcionados por los registros EAX, EBX, ECX y EDX después de que la instrucción CPUID sea ejecutada con un 2 en el registro EAX. EAX: Normalmente se le llama "acumulador" puesto que es en él donde se sitúan los resultados de operaciones, tales como DIV y MUL. Su tamaño, al igual que el resto, es de 32 bits. Puede dividirse en dos sub registros de 16 bits, uno de los cuales (el menos significativo, es decir, el de la derecha) se puede acceder directamente como AX. A su vez, AX se puede dividir en dos subregistros de 8 bits, AH y AL. EBX: Aquí sucede lo mismo que con EAX; su división incluye subregistros BX (16 bits), BH y BL (8 bits). 73

73 ECX: Aunque este registro es como los anteriores (con divisiones CX, CH y CL), tiene una función especial que es la de servir de contador en bucles y operaciones con cadenas. EDX: Se puede dividir este cuarto registro "genérico" en DX, DH y DL; además, tiene la característica de que es aquí donde se va a guardar parte de los resultados de algunas operaciones de multiplicación y división (junto con EAX). Se le llama "puntero de E/S", dada su implicación también en acceso directo a puertos. Acceso TLB A diferencia de las cachés, el TLB está estructurado como una celda CAM, por lo que el programador puede leer/escribir directamente una determinada entrada en los datos o comandos de cachés, sin embargo, el TLB sólo indica el acierto o fallo en bit H del TR7. Para escribir una entrada en el TLB: Escribe la dirección física (31:12 bits), los bits atributo, los bits LRU y la sustitución de la entrada en el TR7. Por lo que el bit H, en el TR7, se deberá poner a 1. Escribir la dirección lineal, los bits de protección y el tamaño de la página en el TR6. También habrá que establecer, en el TR6, el bit OP a 0. Para leer una entrada del TLB: Escribir la dirección lineal y los bits CD y OP=1 en TR6. Si el bit H, del TR7, está a 1, la lectura resulta un acierto. Se lee la dirección física traducida, los bits de atributo, y la entrada del TR7. Leer los bits V, D, U y W del TR6. Ahora bien, Si el bit H se encuentra a 0, la lectura produce un fallo y la dirección física no está definida. Cabe mencionar que en la lectura del TLB, el bit PS en el registro TR6 no tiene porque estar fijado, ya que dicho bit es realmente escrito por el procesador al final de la búsqueda del TLB. Resumen TLB en procesadores Pentium El Pentium dispone de dos cachés internas que son gemelas y se usan para almacenar datos e comandos por separado. Éstas tienen un tamaño de 8 KB, una organización asociativa de 128 conjuntos, con 2 líneas por conjunto y 32 bytes por línea. El algoritmo de reemplazo es LRU (Least Recently Used) y la actualización es directa (write through). Además, cada caché dispone de su propio TLB, que dispone de 64 entradas en el caso de los datos y 32 en el de las comandos, ambas organizadas de forma totalmente asociativas. 74

74 Pentinum Pro Introducción El Pentium Pro es la sexta generación de arquitectura x86 de los microprocesadores de Intel, cuya meta era remplazar al Intel Pentium en toda la gama de aplicaciones, pero luego se centró como chip en el mundo de los servidores y equipos de sobremesa de gama alta. Posteriormente Intel lo dejó de lado a favor de su gama de procesadores de altas prestaciones llamada Xeon. Fue puesto a la venta en noviembre de Características Ofrece soporte para cachés secundarias externas (fuera del chip de la CPU). Usa una caché secundaria de 256 KB ó 512 KB en un chip diferente encapsulado con el procesador. Ello permite reducir el tiempo de acceso a la caché secundaria. Dispone de optimizaciones que permiten reducir la penalización de los fallos. La primera consiste en proporcionar la página pedida cuando ocurre un fallo. También permite que el procesador continúe ejecutando instrucciones que acceden a la caché de datos durante un fallo de caché. Característica Direcciones virtuales Direcciones físicas Tamaño de página Organización del TLB Intel Pentium Pro 32 bits 32 bits 4KB, 4MB Un TLB para instrucciones y otro para datos. Ambos 4 asociativos Reemplazo Pseudo LRU TLB instrucciones: 32 entradas TLB datos: 64 entradas Fallos del TLB tratados por hardware Tabla 10: Resumen características Intel Pentium Pro 75

75 Core 2 Duo El microprocesador Core 2 Duo de Intel es la continuación de los Pentium D y Core Duo. Su distribución comenzó el 27 de julio de Mediante la aplicación RightMark Memory Analyzer, he optado por instalarla sobre mi ordenador, para obtener datos interesantes acerca de la caché y el TLB. Modelo analizado: Intel Core 2 Duo T GHz. Core: Merom, la primera versión portátil del Core 2, fue oficialmente presentada el 27 de Julio de Caché Dispone de dos cachés: En el primer nivel, se encuentra la caché de datos y la de instrucciones. Ambas poseen un tamaño de 32KB y son asociativas por 8 vías. En el segundo nivel, la caché está integrada por un tamaño de 2048KB, y al igual que la de primer nivel, es asociativa por 8 vías. 76

76 TLB Cada una de las cachés anteriormente mencionadas dispone de un TLB. Primer Nivel Caché: TLB Datos, cuenta con 256 entradas, asociatividad de 4 vías y una penalización por fallo de 7 ciclos. TLB Instrucciones, posee 128 entradas, asociatividad, también, de 4 vías. Pero en este caso, la penalización por fallo es penalizada con muchos más ciclos; 20. Segundo Nivel Caché: TLB Datos, respecto a la caché de primer nivel, el número de entradas decrece considerablemente, pasando a ser 16. Se mantiene la asociatividad de 4 vías. Y en este caso, la penalización por fallo pasa a ser únicamente de 2 ciclos. TLB Instrucciones, no se proporciona información al respecto. 77

77 IBM Power 1 Un gran hito de la Arquitectura de Computadores fue la segmentación superescalar, propuesta por John Cocke; acuñó el nombre de superescalar, que consiste en ejecutar muchas instrucciones a la vez en el mismo microprocesador. Los primeros procesadores superescalares fueron los IBM Power 1. Mientras que el PowerPC es una variación de la arquitectura Power 1. PowerPC 604 PowerPC (usualmente abreviada PPC) es el nombre original de la arquitectura de computadoras de tipo RISC, fue desarrollada por IBM, Motorola y Apple. El PPC 604, al igual que el Pentium Pro, también ofrece soporte a cachés secundarias externas y optimizaciones adicionales que permiten reducir la penalización de los fallos. El Pentium Pro y el PPC se distinguen en su traducción de direcciones y estas diferencias se trasladan a la circuitería del TLB. El PPC tiene una dirección virtual mayor; 52 bits, frente a los 32 bits del Pentium Pro. Característica PowerPC 604 Direcciones virtuales 52 bits Direcciones físicas 32 bits Tamaño de página 4KB, seleccionable y 256 MB Organización del TLB Un TLB para instrucciones y otro para datos. Ambos 2 asociativos Reemplazo LRU TLB instrucciones: 128 entradas TLB datos: 128 entradas Fallos del TLB tratados por hardware Figura 34: Resumen de las características del PowerPC 604 Esta máquina permite páginas grandes. Este tipo de páginas evitan que se asignen muchas entradas a un simple objeto que está siempre presente. El PPC también ofrece un tamaño de página variable para permitir el uso de páginas mayores. 78

78 AMD K5 El microprocesador K5 fue elegido por AMD para competir con el Pentium original. Ello tuvo lugar en 1996, y se situaba entre las prestaciones del Pentium y el Pentium Pro. Destacaba por las siguientes características: Novedoso sistema de predicción de fallos. Ejecución fuera de orden que no se penalizaba al ejecutar aplicaciones de 16 bits, algo que al Pentium Pro le costó que el mercado le diera la espalda. Factor de superescalaridad de cuatro (frente a los dos con restricciones en el Pentium). Una caché L1 de 24 KB, dividida en 16 KB para instrucciones y 8 KB para datos AMD Athlon: K7 A mediados de 1999, AMD lanzó al mercado el que se ha convertido en el emblema de la compañía: su K7 o Athlon. Figura 35: Diagrama de bloques del microprocesador K7 de AMD, con su sistema de decodificación en paralelo y sus dos cauces de ejecución (uno para enteros y otro para números de coma flotante) 79

79 A continuación, se pasará a explicar su complejo sistema de decodificación en paralelo, donde como se verá, participa el TLB. 1) Direccionamiento del código. El contador del programa referencia a una posición de memoria virtual que se traduce a dirección física ayudándose de un TLB. Éste presenta una implementación multinivel de 24 y 32 entradas en el primer nivel para instrucciones y datos, y de 256 en el segundo nivel para cada caso. 2) Obtención del código de instrucción. Con la dirección física se accede a la caché de instrucciones, de donde se obtiene el código de instrucción de 128 bits. 3) Predecodificación. El código se pasa a un cauce segmentado DirectPath si éste tiene instrucciones sencillas, sino se pasa a VectorPath. 4) Macrodecodificación. En el primer caso, la decodificación y el control se realiza como en un procesador RISC. Mientras que en el segundo caso, la realiza una ROM de proyección que direcciona a su vez a una ROM de microprograma 5) Microdecodificación. Tres decodificadores de instrucción funcionan en paralelo para traducir individualmente y simultáneamente los códigos de control de cada una de las tres instrucciones que componen el código de 128 bits. Al final de esta etapa, se obtienen las microinstrucciones. Éstas llegan a la unidad de control de instrucción, tienen como objetivo situarse en el cauce segmentado según su tipo: entero o punto flotante. Fase de búsqueda de instrucción A la hora de la ejecución de una instrucción, el K7 realiza la búsqueda de instrucción usando su caché L1I convencional, a la que accede en un solo ciclo a través de su TLB integrada (donde se realiza la traducción virtual a física). Figura 36: Diagrama de bloques del procesador superescalar Athlon de AMD 80

80 Es capaz de realizar las etapas fetch, decode e issue de hasta tres instrucciones x86 por ciclo, gracias a la unidad de control de instrucciones (UCI) centralizada y también puede tratar dos tipos de instrucciones; enteras o de coma flotante. Instrucciones Caché La memoria caché L1 de instrucciones está formada por 64 KB. Las funciones asociadas con L1 son: instrucciones de carga, instrucciones de prefetch, instrucciones precodificadas y predicciones de salto (branch). Si se pierde una instrucción L1 caché, éstas se cargarán de la L2, o bien a partir de la memoria local, mediante unidad interfaz de bus (BUI). El reemplazo de las líneas de caché se efectúa mediante el algoritmo LRU (algoritmo de reemplazo basado en sustituir aquella que se haya utilizado menos recientemente). La I Caché de L1 tiene asociada una estructura TLB a dos niveles. El primer nivel es totalmente asociativo y contiene 24 entradas (16 pueden mapear páginas de 4 KB, y los ocho restantes pueden mapear páginas de 2 ó 4 MB), mientras que el segundo también es asociativo de cuatro vías y posee 256 entradas para mapear páginas de 4 KB. Datos Caché La memoria caché L1 de datos posee dos puertos de 64 KB. Es una caché de tipo write back 9 (escritura retardada) y usa una política de reemplazo LRU. Los datos e instrucciones de caché son ambos un conjunto asociativo de dos vías y de 64 KB. Se dividen en 8 bancos, donde cada banco es de 8 bytes. Además, esta caché soporta el protocolo MOESI (Modificación, Propietario, Exclusividad, Compartición e Invalidación) de coherencia de caché y paridad de datos. La memoria caché L1 de datos tiene una estructura asociativa TLB de dos niveles. El primer nivel es completamente asociativo y contiene 32 entradas (24 que mapean páginas de KB y las ocho restantes que mapean páginas de 2 ó 4 MB). El segundo nivel del TLB es un conjunto asociativo de 4 vías, con 256 entradas que puede mapear páginas de 4 KB. 9 Write back: es la acción de escribir un bloque válido y sucio desde un nivel de la caché al nivel inferior de la jerarquía de memoria (L2, memoria principal) donde también se podría encontrar información de ese bloque pero no está actualizada. 81

81 AMD K8 Introducción El AMD K8 fue un procesador que marcó una época, arrasó a la competencia de su archirival Intel y se convirtió en el rey en los segmentos de consumo y estaciones de trabajo / servidores. El revolucionario concepto de la controladora de memoria integrada, primicia en el mundo x86, disparó brutalmente las prestaciones del núcleo K8. El K7 siempre adujo de elevadas latencias en su subsistema de memoria, una caché L2 muy lenta y con alta latencia y un hardware prefetch ineficiente con una implementación simplista hacían del AMD Athlon un gran procesador ávido de datos e instrucciones. K8 acabó con la gran limitación de K7 y lo hizo a lo grande. Integró la controladora de memoria en la CPU. TLB La implementación TLB de AMD K8 es la siguiente: L1 D TLB: 32/4 entradas. Completamente asociativo. Miss penalty de 5 ciclos. L1 I TLB: 32/4 entradas. Completamente asociativo. Miss penalty de 4 ciclos. L2 D TLB: 512 entradas. Asociatividad de 4 vías. Miss penalty de 17 ciclos. L2 I TLB: 512 entradas. Asociatividad de 4 vías. Miss penalty de 25 ciclos. Figura 37: Captura con RMMA (RightMark Memory Analyzer) de las características del TLB en un AMD K8 Se puede decir que es una implementación bastante potente. Claramente superior a la de su competidor, el Intel Pentium 4. 82

82 AMD K10 Barcelona 65nm Implementación TLB en AMD Barcelona: L1 D TLB: 48 entradas. Completamente asociativo. Miss penalty 5 ciclos. L1 I TLB: 48 entradas. Completamente asociativo. Miss penalty 4 ciclos. L2 D TLB: 512 / 128 entradas. Asociatividad 4 vías. Miss penalty 28 ciclos. L2 I TLB: 512 / 128 entradas. Asociatividad 4 vías. Miss penalty 36 ciclos AMD K10 (AMD Phenom) Los AMD Phenom forman parte de una nueva línea de microprocesadores, denominada AMD K10 (los AMD64 formaban parte de los K8, por ejemplo, y los K9 todavía son un proyecto), y traen muchos modelos con diferentes características: En primer lugar, tres tipos de microprocesadores: Phenom X2 (codename Kuma): doble núcleo, desde 1.9 hasta los 2.9 GHz, tres niveles de caché (L1:2x(64x64); L2:2x512; L3:2048) y lanzados aproximadamente sobre el último cuarto del En teoría, la gama más baja de los tres tipos. Phenom X4 (codename Agena): microprocesadores quad core, desde 1.9 hasta los 2.5 GHz, tres niveles de caché (L1:4x(64x64); L2:4x512; L3:2048) y fueron lanzados aproximadamente en junio de Phenom FX (codename Agena FX): también quad core, desde 2.4 hasta los 2.6 GHz, y también tres niveles de caché (L1:4x(64x64); L2:4x512; L3:2048). Se lanzaron junto con los Phenom X4. Vienen a ser la gama más alta de microprocesadores domésticos AMD, más que los X4. Como característica común Todos los Phenom tienen tecnología de 65 nanómetros y utilizan el socket AM2+ (cuya principal novedad es la integración de la última versión de HyperTransport 10, la 3.0), excepto los Phenom FX que utiliza el Socket F o el F+ (el mismo que algunos Opteron). Adicionalmente, AMD también lanzó a finales de 2007, y dentro de su gama de microprocesadores K10 los Barcelona (es su sobrenombre), que serán los sucesores de los Opteron en los K8, los actuales micros para servidores. AMD Barcelona es un microprocesador de cuatro núcleos nativos. Con estos K10 AMD Barcelona: 2 MB de memoria caché L3 compartida y 512 KB de caché L2 para cada núcleo. 10 HyperTransport: es un bus de interconexión punto a punto pensado para reemplazar a la extensa jerarquía de buses multinivel del PC, aunque está dirigida a todo tipo de plataformas, incluyendo servidores y sistemas empotrados. 83

83 Instruction Fetch: es una pequeña memoria que actúa como buffer en el momento de cargar información desde la L1 para la decodificación y posterior ejecución. En el K8 y Core 2 esa memoria era capaz de almacenar hasta 16 bytes por ciclo, en el caso del K10 esa memoria ha aumentado al doble, 32 bytes, para asegurar una ejecución mantenida de instrucciones lo más cercano a 3 instrucciones por ciclo. Tabla 11: Comparativa de la capacidad TLB entre AMD K8 y AMD K10 Las mejoras en el apartado de virtualización se deben en gran parte a la mejora y ampliación de los buffers TLB que manejan estos procesadores, donde el K10 ha aumentando notablemente la capacidad de éstas agregando soporte a páginas de 2MB y 1GB, sin embargo, estas mismas modificaciones son las que le han traído problemas a AMD y el bug TLB de la revisión B2 de los primeros Phenom Barcelona. 84

84 5. HERRAMIENTAS UTILIZADAS 5.1. SimpleScalar SimpleScalar es un simulador de arquitectura de computadores, desarrollado por la universidad de Wisconsin. Gracias a que la herramienta se distribuye en código abierto, desde 1995, se encuentra ampliamente difundido y respaldado por una gran comunidad de usuarios que participan de forma activa en su desarrollo y mejora. A su vez, permite a los usuarios ampliar SimpleScalar, y adaptar los modelos existentes con sus propias ideas. Las herramientas del SimpleScalar permiten a los usuarios construir aplicaciones que simulan verdaderos programas, pudiéndose ejecutar en una amplia gama de procesadores modernos y sistemas. A parte de usarse para la simulación, se incluye un conjunto de herramientas de visualización de rendimiento, análisis estadístico de los recursos, y de depuración y verificación de la infraestructura Funcionamiento A la hora de realizar las simulaciones toma un binario compilado para su arquitectura, emulando su ejecución sobre uno de los cinco procesadores simulados que facilita. Esta herramienta ya contiene binarios precompilados que se pueden utilizar, pero a su vez, provee de una versión modificada del GNU GCC, para poder compilar nuestro propio test en FORTRAN o C Características Alta flexibilidad: simulador funcional (implementa la arquitectura) + simulador de rendimiento (implementa la microarquitectura) Portabilidad: o Requiere sólo que las herramientas GNU estén instaladas en la máquina. o Se puede ejecutar sobre diferentes sistemas operativos, aunque la mayoría de los usuarios utilizan Linux/x86. o Puede interpretar diferentes conjuntos de instrucciones: el Alpha (DEC, Digital Equipment Corporation), PISA (Portable Instruction Set Architecture), ARM (Advanced RISC Machines Ltd.) y del x86 (Intel). 85

85 o Se puede ejecutar en diversas plataformas, desde procesadores unpipelined a microarquitecturas con planificaciones dinámicas y múltiples niveles de jerarquía. Extensibilidad: modelo estructurado que permite realizar modificaciones de forma más fácil de un cierto modelo. Rendimiento: o o Sim Fast: 10+ MIPS (Millones de Instrucciones Por Segundo) Sim Outorder: 350+ KIPS Modalidades de simulación Figura 38: Modalidades de simulación integradas en SimpleScalar 1) Sim Fast: es la simulación más rápida y sencilla. Se encarga de realizar una emulación funcional, ejecutando instrucciones en serie, sin tener en cuenta la caché, el comportamiento de los pipelines, ni ninguna otra parte de la microarquitectura. Cabe mencionar que la única modalidad que no soporta es DLite! 2) Sim Safe: no es más que una variante del anterior, pero algo más lento, ya que realiza comprobaciones de permiso de acceso a memoria en cada operación. 3) Sim Profile: controla y devuelve contadores de instrucciones dinámicas, contadores de tipo de instrucción, contadores de salto y modos de direccionamiento. 4) Sim Caché / Sim Cheetah: simulador de la caché del procesador. Es perfecto para simulaciones rápidas de caché, siempre y cuando el efecto del funcionamiento de la misma sobre el tiempo de ejecución no se requiera. Emula diferentes niveles, tamaños y organizaciones de memorias de caché, tanto de datos como de instrucciones. 5) Sim BPred: simulador de predicciones de salto, donde se emulan diferentes tipos de pronósticos, devolviendo aciertos de predicción (hits) o bien fallos (misses). 86

86 6) Sim Outorder: de todos los simuladores mencionados, es el más complejo. Éste es capaz de realizar la emisión y ejecución fuera de orden mediante RUU (Register Update Unit). Este tipo de registro usa un buffer de reordenación para renombrar de manera automática los registros y mantiene los resultados de direcciones pendientes. Este simulador está muy parametrizado, dispone de la posibilidad de especificar el tipo de predicción de salto (taken, nottaken, BTB con contador de dos bits, etc), se puede activar la herramienta para el trazo del pipeline, etc. Por último, mencionar que puede emular procesadores con varias unidades de ejecución CACTI Introducción El simulador CACTI es una herramienta utilizada para evaluar las estructuras de memoria implementadas en un microprocesador, así como también se usa la función de simulador de temperatura y de energía. Concretamente para este proyecto, se aplicará para el estudio estático de las memorias cachés; área, consumo y tiempo acceso. En 1994, surgió la primera versión de CACTI (CACTI 1.0), con ello se consiguió una rápida herramienta para modelar cachés SRAM. Se encargaba de contabilizar el tiempo de acceso y de ciclo entre la configuración de la memoria caché directa y la asociativa. Posteriormente se amplió a la versión CACTI 2.0. En ella se proporcionaba soporte a las memorias cachés completamente asociativas, configuración multipuerto y al tamaño de línea. En ésta ya se tenía en cuenta el consumo generado por una cierta configuración. En la versión 3.0, se añadió soporte para los subbancos. Éstos permiten dividir la memoria caché en un número de subbancos que poseen su propio conjunto de direcciones y buses de datos. Tras ésta, surgió la versión 4.0. En ella se añade un modelo para leakage power y se actualiza la estructura básica de circuitos y los parámetros de los dispositivos para reflejar los avances en la ampliación de semiconductores desarrollados en los últimos años. Finalmente, actualmente se cuenta con la versión CACTI 5.1. Ésta incluye mejoras respecto a la anterior versión, principalmente destacan las siguientes: a) La tecnología de modelado ha cambiado la escala lineal simple de la tecnología de 0.8 micrones a modelos basados en ITRS. 87

87 b) La implantación de la tecnología DRAM ha sido establecida por algunos proveedores. Por ello, se ofrece soporte de modelado de memorias DRAM. c) Permite a los usuarios ejercer más control sobre el área, el delay y la potencia de la solución final. La versión utilizada en este proyecto es la 4.1. Ya que si bien HP dispone de la versión 5.3 online, ésta no satisface las necesidades que plantea tamaños tan pequeños como los de un TLB. El hecho de decantarse por una versión anterior a la actual, es debido principalmente a que la última versión de CACTI, supone unos parámetros de entrada, tales como: temperatura, tipo de dispositivo de circuito tanto para el array de TAGs como para el de datos, ancho de banda del TAG, etc. los cuales son absolutamente irrelevantes para nuestro estudio. Por su parte, la versión 4.1 acepta como entrada: tamaño TLB, tamaño de línea, asociatividad, tecnología integración, número de puertos L/E, número de puertos de lectura, número de puertos de escritura y número de subbancos. Por lo que adaptando este conjunto de valores de entrada se realizarán los posteriores estudios Funcionamiento CACTI usa varios modelos analíticos para calcular el tiempo de acceso, el área y la energía consumida para diferentes configuraciones de la memoria caché. El simulador CACTI devolverá la mejor configuración en relación con el tiempo de acceso, la energía consuma y el área a partir de una función de optimización. 88

88 6. ESTUDIO ESTÁTICO CON CACTI 6.1. Introducción CACTI divide la memoria caché, en dos: una para direcciones (Tag Array) y otra para datos (Data Array). Figura 39: Estructura caché usada en CACTI En la figura 39 se puede apreciar el Tag Array (array de etiquetas), el cual indica a que porción de la RAM está asociada cada línea de la caché. Es decir, permite traducir una dirección de RAM en una determinada línea de caché. El decodificador (figura 39) inicialmente decodifica la dirección y selecciona la fila adecuada haciendo conducir una línea de palabra en el array de datos y una línea de bit en el array de etiquetas. Cada array contiene tantas líneas de palabras como filas haya en dicho array, pero sólo una de ellas se activa a la vez. Cada celda de memoria a lo largo de la fila seleccionada tiene asociada un par de líneas de bit. Cuando la línea de palabra se activa, cada celda de memoria en esa fila descarga una de sus dos líneas de bit; el valor almacenado en la celda de memoria determina que línea de bit se descarga. Cada amplificador monitoriza un par de líneas de bit y detecta cual de las dos cambia. Detectando cual de las dos líneas cambia el amplificador determina que valor existe en la celda. Es posible compartir un amplificador entre varios pares de líneas de bit. En ese caso, se inserta un multiplexor antes del amplificador; las líneas de selección son dirigidas por el decodificador. 89

89 La información leída del array de etiquetas se compara con la etiqueta obtenida de la dirección. En una caché de asociatividad k se requieren k comparadores. El resultado de las k comparaciones se utilizan para indicar si ha habido un acierto (cache hit) o un fallo (cache miss) en caché, en este último caso el dato debe ser traído de la memoria principal. Para conducir las líneas de selección de los multiplexores de salida. Estos multiplexores seleccionan la información apropiada del array de datos (en una caché asociativa o en una en el que el ancho del array de datos es mayor que el ancho de salida), y conducen la información fuera de la caché. El hecho de disponer de cachés separadas presenta: Ventajas: a) Tener cachés separadas evita colisiones entre la etapa de traída y la de acceso a los datos. b) Se consigue duplicar el ancho de banda (dos accesos en paralelo). Desventajas: por separado pueden llegar a tener mayores tasas de fallos que unificadas Resultados extraídos A partir de CACTI se ha obtenido: Tiempo de acceso establece el tiempo de acceso total mediante Access Time (ns). El tiempo de acceso es calculado como el peor tiempo de acceso al TLB, ya que CACTI lo separa en el tiempo de acceso al Data array y el tiempo de acceso al Tag array. Así pues, si ocurre que el tiempo de acceso al array de datos es superior al del array de TAGs, es decir (T. acceso Datos) > (T. acceso TAG), implicaría que el tiempo de acceso resultante devuelto por CACTI sería el de datos. También puede suceder lo contrario; (T. acceso TAG) > (T. acceso Datos). En este caso, el resultado obtenido sería el tiempo de acceso al array de TAGs. En el Tag array se realiza una comparación para averiguar si a partir de una cierta dirección contiene una determinada línea de caché. Por su parte, en el Data array no se efectúa ninguna comparación. Este hecho junto con el pequeño tamaño de línea permitido en el almacenamiento de TLBs, hace pensar que el mayor tiempo de acceso se produzca en el Tag array. 90

90 Área indica el área total que ocupan todos los bancos del TLB mediante Total area subbanked (mm 2 ). Consumo CACTI proporciona dos valores de consumo. Por un lado estaría el consumo producido por las lecturas; Total dynamic Read Energy all Banks (nj), y por otro el generado por las escrituras; Total dynamic Write Energy all Banks (nj). Generalmente, cuando se mide el consumo de una caché (en el estudio se tratará de un TLB) se toma el resultado generado por la operación de lectura, ya que por cada cuatro lecturas suele realizarse una escritura, tomando así la operación más frecuente; la de lectura. Para conseguir un completo estudio se ha considerado interesante analizar ambos consumos, adjuntando también una comparativa entre éstos Modificaciones CACTI Para el estudio estático (área, consumo y tiempo acceso) se ha empleado, tal como se ha comentado, el simulador CACTI. Aunque han sido necesarias una serie de modificaciones sobre el propio código de CACTI Independizar resultados El enfoque tomado por CACTI, consiste en obtener el mejor resultado, iterando todas las posibles configuraciones, en relación a los tres parámetros que se estudiarán (tiempo de acceso, área y consumo). Para ello se basa en la siguiente función de optimización: 1 Así pues, para realizar los estudios del tiempo de acceso, se debe valorar la solución asociada únicamente al efecto que produce dicho tiempo, omitiendo con ello la solución que también proporcionaría el área y la energía. Para ello bastaría con considerar c 1 =1 y el resto=0. Lo mismo ocurre para el caso de querer analizar el efecto del área o el consumo. Donde sólo se tendrán en cuenta el parámetro asociado a cada uno de ellos, c 2 y c 3 respectivamente. 91

91 Eliminar restricciones de tamaño del TLB Uno de los principales problemas surgidos es que, CACTI no ha sido diseñado para el estudio de memorias de tamaño tan pequeño como llega a ser un TLB. Dicha circunstancia se debe a que CACTI define el número de filas por subarray mediante la siguiente expresión: C B A N N siendo C= tamaño caché (en el estudio, tamaño TLB), B= tamaño de línea y A= grado de asociatividad. Tal como formula CACTI, la expresión anteriormente indicada debe ser mayor que cero. Condición que no ocurre con valores de TLB pequeños. Por ejemplo, con un tamaño de 1024 bytes (el mínimo estudiado), se obliga a: A 4 o B 64 o a bien aumentar C. Ninguna de estas tres necesidades son posibles para efectuar el estudio deseado. Así pues, es necesario saltarse las restricciones establecidas. Ello implica la modificación del fichero area.c, concretamente las funciones: data_organizational_parameters_valid y tag_organizational_parameters_valid. Con ello se consigue aceptar tamaños pequeños de TLB. También será necesario poder saltar los errores que provoca tener un número de subbancos menor que cero. Para ello también se ve afectado el fichero area.c, pero esta vez las funciones afectadas son: decodemem_row, postdecode_area, decodetag_row y fadecode_row. Y el fichero time.c, en concreto se trata de las funciones decoder_delay, decoder_tag_delay. Para poder estudiar tamaños de TLB tan pequeños como suponían 512 y 256 bytes se vio también modificado el fichero io.c. En este se eliminaron todas aquellas restricciones asociadas que no permitían trabajar con tamaños de caché tan pequeños. Aunque tal como se menciona en el apartado de los parámetros y valores estudiados, estos valores fueron finalmente suprimidos Modificar mínimo de escala de integración De cara al tratamiento de la escala de integración, se optó por poder estudiar versiones de hasta 90 nanómetros (nm). Pero en la versión empleada de CACTI, sólo se permite hasta 80 nm. Así pues, se modificaron dos ficheros. Se trata de io.c, para cambiar aquellas partes en las que únicamente se permitía introducir como máximo 80 nm por 90. Y del fichero leakage.c. Una de las funciones que posee éste, calcula las energías dinámicas de lectura y escritura, las cuáles son añadidas en el cálculo de la función de minimización de cara a la parte del consumo. Este fichero contiene una serie de funciones, alguna de las cuales es invocada desde time.c, a la hora 92

92 de realizar el cálculo del tiempo de acceso. Para conseguir una correcta invocación, en el fichero leakage.c se han visto afectados parámetros tales como Leff y FUDGEFACTOR, los cuales se basaban en 80 nm Parámetros y valores estudiados Mediante CACTI se han efectuado un conjunto de pruebas, donde se ha analizado como afecta al TLB la modificación de los siguientes parámetros: Tamaño TLB: {256, 512, 1024, 2048, 4096, 8192, 16384, bytes} Grado de asociatividad: {directa, 2, 4, 8} Tamaño de línea: {32, 64, 128 bytes} Escala de integración: {32, 45, 65, 90 nm} Número de puertos: {L=1 E=1, L=2 E=1, L=2 E=2, L=4 E=1} Para cada uno de ellos, se obtendrá el tiempo de acceso (Access Time), el área (Total area subbanked) y el consumo (Total dynamic Read Energy all Banks y Total dynamic Write Energy all banks). En el conjunto de pruebas realizadas, se han considerado como comunes los siguientes valores base: Tamaño TLB: 4KB Asociatividad: 4 Tamaño línea: 64 Escala integración: 45 Puertos: 2 de lectura, 1 de escritura y 0 de lectura y escritura Número de subbancos: 1 93

93 Estudio del grado de asociatividad Antes de pasar a evaluar los resultados obtenidos, cabe mencionar que debido a restricciones implantadas por CACTI, se hace imposible evaluar TLBs inferiores a 1 KB, ya que todo y evitando la restricción que marcaba como mínimo este tamaño, los resultados generados para 512 y 256 bytes se han descartado por motivo de las incongruencias que resultaban. Así pues el tamaño mínimo estudiado será 1 KB Tiempo de acceso Los resultados adjuntos de la figura 40, muestran el tiempo de acceso para diferentes tamaños de TLB, considerando para cada uno de ellos los siguientes grados de asociatividad: directa, 2 asoc, 4 asoc y 8 asoc. Para este análisis sólo se ha ido variando el campo de la asociatividad del TLB en función de los diferentes posibles tamaños de TLB (1, 2, 4, 8, 16 ó 32 KB), manteniendo así fijos el resto de ellos. a) b) Figura 40: Tiempo acceso en función del grado de asociatividad Observando la figura 40 a), se puede apreciar como el tiempo de acceso, en los casos extremos, toma valores desde hasta ns. Por lo que los diferentes grados de asociatividad no reflejan considerables mejoras entre utilizar un tipo u otro, ya que la diferencia entre el valor máximo y el mínimo varía en poco más de un nano segundo. En la figura 40 b) se refleja que a partir del primer tamaño de TLB hasta el último analizado, el tiempo de acceso se mantiene prácticamente constante entre estos valores. Para el caso de tratarse de una asociatividad directa, se observa como el tiempo de acceso en función de la variación del tamaño del TLB, varía de media en poco más de 0.1 ns entre uno y el 94

94 inmediatamente siguiente. El mayor aumento se produce al pasar de un TLB de 8192 a uno de bytes. Por su parte, si se dispone de 2 asoc, 4 asoc o bien 8 asoc, se aprecia que el paso de un TLB de 1KB a uno de 2KB, no produce prácticamente ninguna diferencia en el tiempo de acceso. Muestra de ello es que la variación es de poco más de 0.01 ns. En la figura 40 b), se distingue claramente como la asociatividad directa es la que produce mejores tiempos de accesos. A su vez, se trata de la asociatividad que más diferencias experimenta entre un tamaño de TLB y otro. Para el resto de grados de asociatividad, se percibe un comportamiento en el crecimiento similar entre las tres. Ya que si bien para TLBs de hasta 4 KB, la mejor opción (sin considerar la 1 asoc) sería la 2 asoc, a medida que se aumenta el tamaño del TLB, llegan a producirse tiempos muy similares. Un ejemplo de ello, sería el caso de disponer de un TLB de 8 KB, donde las tres asociatividades prácticamente coinciden en el mismo tiempo de acceso. Como conclusiones, se puede se extraer que el tiempo de acceso se verá aumentado por el incremento en el grado de asociatividad. Y como era de esperar, un TLB mayor tendrá un tiempo de acceso mayor Área El grado de asociatividad no influirá notablemente en el área. Muestra de ello es la figura 41 a) y b). En ellas, los diferentes grados de asociatividad experimentan prácticamente la misma progresión, es por ello que entre un grado de asociatividad y el inmediatamente siguiente, existe de media un crecimiento de unos 2 mm 2. Fijándonos en los grados de asociatividad, la mayor diferencia que se alcanza es de aproximadamente mm 2, con un TLB de 32 KB. Mientras que la mínima diferencia experimentada se encuentra en TLBs de 1 KB, donde sería de poco más de 4.5 mm 2. Por su parte, observando el tamaño de TLB se aprecia que entre un cierto tamaño de TLB y el siguiente se sufre un crecimiento de prácticamente el doble, consiguiendo así una evolución exponencial. 95

95 a) b) Figura 41: Área en función del grado de asociatividad Consumo lectura a) b) Figura 42: Consumo lectura en función del grado de asociatividad Un TLB con asociatividad directa es claramente el que menor consumo realiza en todos los tamaños de TLB estudiados. Por su parte, disponer de un TLB 8 asociativo puede llegar a suponer un leve aumento en el consumo de lectura. Las figuras 42 a) y 42 b) muestran como el grado de asociatividad no afecta al consumo de lectura, ya que la evolución que se experimenta es prácticamente lineal para todas las asociatividades estudiadas. Únicamente se diferencia, mínimamente, el grado 8 asociativo al pasar de un TLB de 1 KB a 2 KB. 96

96 Consumo escritura a) b) Figura 43: Consumo escritura en función del grado de asociatividad Al igual que para el consumo de lectura, la asociatividad directa es la que menor consumo experimenta. En las figuras 43 a) y 43 b) se aprecia que el consumo de escritura no se ve afectado por el grado de asociatividad, debido a que el crecimiento es prácticamente lineal para todas las asociatividades estudiadas Comparativa: Consumo lectura vs consumo escritura Figura 44: Comparativa consumo en función del grado de asociatividad Si bien cabía esperar que la evolución experimentada del consumo de escritura en comparación con el de lectura fuese unas cuatro veces inferior, ya que por cada escritura se suelen realizar unas cuatro lecturas, en la figura 44 se muestra como es de prácticamente la mitad. 97

97 También se hace evidente que a menor grado de asociatividad, tal y como se podía intuir, menor será el consumo (tanto de lectura como de escritura). Cabe destacar la poca diferencia existente entre el uso de una asociatividad directa y una asociatividad con dos conjuntos, no ocurriendo igual para el resto de casos, donde la diferencia es más remarcada Estudio del tamaño de línea Tiempo de acceso La entidad básica de almacenamiento la conforman las filas, llamados también líneas de caché. Para el estudio de éstas, se ha optado por evaluarlo con los valores de 32, 64 y 128 bytes. Si bien en el estudio anterior, el parámetro de entrada que variaba era el grado de asociatividad, en este caso la modificación se irá produciendo sobre el tamaño de línea en función de los posibles tamaños de TLB especificados. a) b) Figura 45: Tiempo de acceso en función del tamaño de línea En el estudio de la asociatividad se mencionó que la variación del tiempo de acceso entre los casos extremos era de poco más de un ns. En este caso no se llega a alcanzar ni los 0.4 ns. Para pequeños TLBS el hecho de tener que escoger entre uno de los tamaños de línea estudiados, sería bastante irrelevante, ya que el tiempo de acceso es muy similar. A medida que va incrementando el tamaño del TLB, se aprecia claramente, en la figura 45 b), que líneas de 128 bytes serían la mejor opción. Aunque la diferencia no es considerablemente notable, ya que se trataría de una mejora de media de unos 0.23 ns respecto a una de 32 bytes, y de aproximadamente 0.1 ns en relación con una de 64 bytes. 98

98 El motivo por el que con un mayor tamaño de línea se consigue el mejor resultado es como consecuencia del hecho del procesamiento de las mismas. Es decir, cuanto mayor sea la línea más bytes se podrán procesar en un mismo ciclo, y con ello menor será el tiempo de acceso al TLB. Al igual que ocurría en el anterior análisis, a medida que aumente el tamaño de TLB también crecerá el tiempo de acceso Área a) b) Figura 46: Área en función del tamaño de línea De forma similar que ocurriría en la figura 41 (área en función del grado de asociatividad), los diferentes tamaños de línea no afectan al área. Tal como se puede apreciar tanto en la figura 46 a) como en la 46b), donde para cada tamaño de línea para un mismo tamaño de TLB, el área es prácticamente la misma Consumo lectura a) b) Figura 47: Consumo lectura en función del tamaño de línea A partir de la figura 47 a) y b), se aprecia claramente que a mayor tamaño de línea, mayor será el consumo por lectura generado. 99

99 Cabe destacar, que ya sea entre el tamaño de línea y su inmediatamente siguiente, o bien a partir de un cierto tamaño de TLB y el siguiente a éste, la evolución tiende a ser lineal. La mayor diferencia existente, todo y ser mínima, se encuentra al disponer de un tamaño de línea 128 bytes y pasar de un TLB de 1 KB a uno de 2 KB Consumo escritura a) b) Figura 48: Consumo escritura en función del tamaño de línea Al igual que ocurría en la figura 47, el consumo de escritura también crece con el aumento del tamaño de línea. Para los tres casos estudiados de tamaño de línea, la evolución que se sigue en el consumo de escritura es prácticamente la misma. Para los diferentes tamaños de TLB, la diferencia existente entre el mínimo y el máximo varía en poco más de 1 nj Comparativa: consumo lectura vs consumo escritura Figura 49: Comparativa consumo en función del tamaño de línea La figura 49 refleja el contraste existente en los valores máximos que se llegan a obtener entre el consumo de lectura y el de escritura. 100

100 La mayor de estas diferencias se puede observar para el caso de un tamaño de línea de 128 bytes. Para éste, la diferencia máxima se refleja en un TLB de 32 KB. Se puede apreciar que el consumo de escritura alcanza unos valores máximos muy pequeños. Éstos son inferiores, aproximadamente la mitad, a los que se llegan a adquirir con el consumo de lectura. Se podría decir que los máximos del consumo de escritura son prácticamente los valores mínimos de lectura. El consumo de lectura presenta variaciones pero no son tan remarcadas como con el consumo de escritura. A partir del primer valor mínimo estudiado; 1 KB, se puede apreciar como el consumo que se genera pasa a crecer de forma exponencial Escala de integración La escala de integración se indica en nanómetros 11 y a menor número, mayor cantidad de transistores en el mismo espacio, es decir, más juntos están. Para realizar el análisis, se ha optado por utilizar los valores más comunes implantados; 90, 65 y 45 nm. Incluyendo también 32 nm, el cual podría ser el siguiente paso que se tome para la reducción de la escala de integración. Con el cambio de 90 a 65 nanómetros se consiguió una mayor densidad de transistores por unidad de superficie en el microprocesador. Al tener un mayor número de estos elementos, el microprocesador gana potencia y mejora la disipación del dispositivo utilizando la misma superficie. Otra opción es, manteniendo la potencia de una CPU, reducir su espacio ocupado. Algo a tener en cuenta es la reducción de la tecnología de 90 a 45 nanómetros, lo que supone la mitad de espacio y, en la teoría, las mismas prestaciones. Actualmente, la escala de integración se encuentra ya en los 45 nm. Considerando, que fue en 2006 donde se empezaron a introducir ordenadores de 65 nm, tales como Intel Core 2 Duo 12, no es difícil pensar que en un par de años se pueda llegar a alcanzar una reducción de la escala actual de integración. De allí, que se haya realizado el estudio de 32 nm. 11 Nanómetro: unidad de medida del sistema métrico que equivale a una billonésima parte de un metro, o una millonésima de milímetro. 12 Intel Core 2 Duo de 65 nm, disponía de 291 millones de transistores. Mientras que su versión actual de 45 nm, cuenta ya con 410 millones de transistores. 101

101 Tiempo de acceso a) b) Figura 50: Tiempo de acceso en función de la escala de integración A partir de la figura 50 a) y b), a primera vista se aprecia una ligera disminución del tiempo de acceso a medida que la escala de integración también se ve reducida. Tomando como referencia el tamaño de TLB, la mayor mejora se obtiene con la reducción de 32 a 16 KB. Todo y no ser una gran disminución (aproximadamente 0.2 ns), teniendo en cuenta el progreso que se sigue con el resto, si que cabe destacarla. Por su parte, la disminución de 16 KB a 8 KB obtiene aproximadamente el mismo decrecimiento que de 32 a 16 KB. Para cualquiera de las cuatro escalas de integración representadas, no se produce un cambio significativo en el tiempo de acceso con el progresivo decremento del tamaño de TLB de 4 KB hasta alcanzar el tamaño de 1 KB, ya que el tiempo de acceso es prácticamente el mismo. Ahora bien, si se fijan las escalas de integración y observamos las evoluciones experimentadas para cada uno de los tamaños del TLB, destaca la mayor mejora al reducir de 65 a 45 nm, y no como cabría esperar de 90 a 65 nm. Para esta última, se produce una disminución en el tiempo de acceso de media entorno a 1.2 ns, mientras que al pasar de 65 a 45 nm, se consigue una mejora de media de 1.45 ns. Por su parte, el posible descenso de 45 a 32 nm, generaría únicamente un 1 ns de mejoría. 102

102 Área A diferencia de los anteriores estudios del área (en función del grado de asociatividad y del tamaño de línea), la escala de integración influenciará en el área. a) b) Figura 51: Área en función de la escala de integración El área, al igual que ocurría con el estudio del tiempo de acceso (figura 50), para tamaños desde 1 hasta 4 KB sigue un crecimiento prácticamente lineal, con valores muy similares entre ellos. Estudiando las figuras 51 desde el tamaño del TLB, despunta el aumento de 8 a 16 KB y de 16 a 32 KB. Si bien para una escala de integración de 32 ó 45 mm 2, se sigue un crecimiento lineal hasta alcanzar un tamaño de 4 KB, no ocurre igual para una escala de 65 ó 90 mm 2, ya que en éstas se comienza a experimentar el crecimiento a partir de 1 KB. Desde la perspectiva de la escala de integración, la que experimenta aumentos más significativos es la de 90 nm. Pasando de unos 19 mm 2 con un TLB de 1 KB hasta 180 mm 2 con uno de 32 KB. Es decir, se produce un incremento de 161 mm 2. El cual destaca en comparación con el resto. Ya que con 65 nm, se lograría aproximadamente la mitad. Al igual que ocurriría con 45 y 32nm, los cuales conseguirían aumentar únicamente la mitad, en comparación con la escala de integración inmediatamente superior analizada. Como era de esperar, a mayor escala de integración más separados se encontrarán los transistores entre sí, y mayor será el área necesaria. Esto hace evidente que si se desea lograr un claro aprovechamiento del espacio hay que recurrir a escalas de integración cada vez más pequeñas. 103

103 Consumo lectura Observando la evolución de la figura 52 a) y b), destaca que a mayor escala de integración (y a mayor tamaño de TLB) más notable será el consumo de lectura generado. a) b) Figura 52: Consumo lectura en función de la escala de integración El aumento que se produce entre una escala de integración y la siguiente es de prácticamente el doble. Este hecho no se refleja entre un tamaño de TLB y su sucesor para una misma escala de integración, ya que se sigue un crecimiento muy lineal. La excepción, mínima, se encontraría para una escala de integración de 90 nm al pasar de un TLB de 16 KB a uno de 32 KB Consumo escritura La progresión seguida en la figura 53 es muy similar a la de la figura 52. Únicamente difieren en los valores alcanzados. Pero aquí también evolucionaban en prácticamente el doble, entre una escala de integración y la siguiente. Todo y que existen casos, como sería la escala de 32 y 45 nm, donde ello no ocurre. a) b) Figura 53: Consumo escritura en función de la escala de integración 104

104 Comparativa: consumo lectura vs consumo escritura Figura 54: Comparativa consumo en función de la escala de integración A diferencia de las anteriores comparativas (figuras 44 y 49), en ésta se refleja claramente como la escala de integración influencia sobre el consumo tanto de lectura como de escritura, ya que la evolución deja de ser tan lineal como lo era en los otros casos. Aunque se continúa manteniendo que el consumo generado de escritura es aproximadamente la mitad que el de lectura. 105

105 Puertos lectura y escritura En este estudio se examinarán diferentes combinaciones del número de puertos, considerando siempre que el número de puertos destinados a lectura y escritura es cero. Esto se debe a que el TLB puede llegar a tener más de un puerto (como los tiene el banco de registros) permitiendo así más de un acceso al mismo bloque del TLB Tiempo de acceso El número de puertos de lectura y escritura no afectará al tiempo de acceso. Ejemplo de ello es la figura 49 a) y b), donde el crecimiento es prácticamente lineal. a) b) Figura 55: Tiempo de acceso en función del número de puertos de lectura y escritura El mayor crecimiento se experimenta para L=4 y E=2, donde se obtiene una diferencia de 1 ns entre el menor y el máximo tamaño de TLB. Para el resto de números de puertos, la diferencia se reduce a medida que disminuye el número de puertos. Para TLBs desde 1 a 4 KB, a penas se experimenta una evolución en los diferentes puertos. Es a partir de TLBs de 8 KB donde se empiezan a apreciar, pero siendo aún así mínimos estos cambios. 106

106 Área a) b) Figura 56: Área en función del número de puertos de lectura y escritura Con el incremento del número de puertos y del tamaño del TLB, se produce un claro aumento del área total del TLB. Observando el tamaño del TLB, se aprecia en la figura 56 a) y b) un crecimiento exponencial. Y al igual que en el anterior estudio, la mayor subida se produce de 16 a 32 KB. Todo y que de 8 a 16 KB, comienza a despuntar el aumento del área. Mientras que la progresión de 1 a 4 KB es prácticamente lineal, ya que el área del TLB con el paso de un tamaño a otro a penas sufre cambios. Analizando el área a partir del número de puertos, destaca que si bien para L=1 E=1 se produce a penas una diferencia de unos 21 ns entre el mayor y el menor tamaño de TLB, no ocurre igual para el caso extremo estudiado; L=4 E=4, el cual genera una diferencia de 132 ns. Por lo que se hace evidente el claro aumento experimentado entre ambos casos. También se puede apreciar, como a menor número de puertos más lineal será la progresión del área. Hecho que no ocurre con un número más elevado de puertos, la cual evoluciona más de forma exponencial. Comparandos los casos en el que fijado el número de puertos de lectura se modifica el número de puertos de escritura, se observa como si bien se produce una ligera diferencia en el crecimiento del área total del TLB, ésta no es muy notable. 107

107 Consumo: lectura y escritura a) b) c) d) Figura 57: Consumo de lectura y escritura en función del número de puertos a) L=1 E=1 b) L=2 E=1 c) L=2 E=2 d) L=4 E=1 e) L=4 E=4 e) 108

108 En general, el consumo de lectura llega a ser prácticamente el doble respecto al de escritura. Si bien el de escritura a penas se ve modificado (comportamiento lineal), el de lectura produce un claro ascenso al pasar de un tamaño de TLB de 16 a 32 KB. Mientras que el consumo previo a un tamaño de 16 KB es muy uniforme. Cabe destacar la pequeña disminución que se produce en el consumo de lectura para todas las figuras 57, al pasar de 1 a 16 KB. La mayor diferencia que se experimenta durante esta evolución, radica en poco más de 2 ns para L=4 E=1 (figura 57 d)) y para L=4 E=4 (figura 57 e)). Para el resto de casos, el valor máximo pasa a ser de 1 ns. Tal como se ha mencionado, el consumo de escritura casi no varía. Un ejemplo de ello, sería la figura 57 b), donde la diferencia que se obtiene entre el tamaño de TLB mínimo al máximo es poco más de 0.25 nj. Aunque, la mayor diferencia se obtendría para la figura 57 d), donde se obtienen 0.77 nj. Dicho valor es ridículo, en comparación con el máximo alcanzado para el consumo de lectura, en L=4 E=4, de 4.8 nj Evolución consumo puertos lectura Figura 58: Evolución del consumo de los puertos de lectura Para el caso de L=1 E=1, no se produce ningún gran aumento en el consumo, exceptuando el paso de 512 bytes a 1 KB. Se podría decir que es bastante lineal. Pero en general, se tiende a una evolución exponencial. En la que los valores máximos se alcanzarán para un tamaño de TLB de 32 KB. El mayor crecimiento se genera al pasar de L=2 E=2 a L=4 E=1, tal y como cabía esperar. Ya que es en el punto donde se produce la diferencia más notable en el aumento del número de puertos. 109

109 Evolución consumo puertos escritura Figura 59: Evolución del consumo de los puertos de escritura Tal y como ya se había comentado en la evolución del consumo de puertos de lectura, la mayor diferencia generada de consumo tiene lugar al pasar de L=2 E=2 a L=4 E=1. Para todos los casos, se tiende a un comportamiento lineal, ya que apenas se producen grandes aumentos entre un tamaño de TLB y el siguiente. El crecimiento más destacado se vuelve a experimentar al pasar de 16 a 32 KB. Se puede apreciar, en la figura 59, que el paso de 1 a 2 KB, llega a generar una pequeña disminución del consumo en vez de un ligero aumento. Pero al igual que pasaba para el consumo de lectura, esta diferencia es tan pequeña que no es significativa Comparativa: consumo lectura vs consumo escritura Figura 60: Comparativa consumo lectura y consumo escritura En la figura 60, se muestra la progresión global del consumo de lectura en comparación con el de escritura. En ella se puede apreciar, como el consumo de escritura alcanza valores mucho menores que los de la lectura, tendiendo a ser la mitad. 110

Unidad 2: Gestión de Memoria

Unidad 2: Gestión de Memoria Unidad 2: Gestión de Memoria Tema 3, Gestión de Memoria: 3.1 Definiciones y técnicas básicas. 3.2 Gestión de memoria contigua: Partición, fragmentación, algoritmos de ubicación... 3.3 Paginación: Estructura

Más detalles

Tema 11. Soporte del Sistema Operativo 11.1. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS. 11.1.1. MULTIPROGRAMACIÓN.

Tema 11. Soporte del Sistema Operativo 11.1. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS. 11.1.1. MULTIPROGRAMACIÓN. Tema 11 Soporte del Sistema Operativo 11.1. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS. El sistema operativo es básicamente un programa que controla los recursos del computador, proporciona servicios a

Más detalles

Tema 6. Gestión de la memoria

Tema 6. Gestión de la memoria Tema 6. Índice Introducción Compartición de memoria Memoria virtual Soporte en los procesadores: la MMU en Linux en Windows NT/2000 1 Tema 6. Introducción Necesidad de la gestión de la memoria Requisitos

Más detalles

TEMA 4. Unidades Funcionales del Computador

TEMA 4. Unidades Funcionales del Computador TEMA 4 Unidades Funcionales del Computador Álvarez, S., Bravo, S., Departamento de Informática y automática Universidad de Salamanca Introducción El elemento físico, electrónico o hardware de un sistema

Más detalles

Hardware y Estructuras de Control. Memoria Virtual. Ejecución de un Programa. Ejecución de un Programa

Hardware y Estructuras de Control. Memoria Virtual. Ejecución de un Programa. Ejecución de un Programa Memoria Virtual Capítulo 8 Hardware y Estructuras de Control Las referencias de memoria se traducen a direcciones físicas dinámicamente en tiempo de ejecución Un proceso puede ser intercambiado hacia dentro

Más detalles

Arquitectura Von Neumann

Arquitectura Von Neumann Arquitectura Von Neumann Arquitectura Von Neumann Establecida en 1945 por Von Neumann Modelo básico de arquitectura utilizado en la mayoría de los computadores Su idea es la de conectar permanentemente

Más detalles

Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción

Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción Tema 7 Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción Se denomina arquitectura superescalar a aquella implementación capaz de ejecutar más de una instrucción por ciclo de reloj.

Más detalles

Sistemas Operativos. Tema 1. Arquitectura Básica de los Computadores

Sistemas Operativos. Tema 1. Arquitectura Básica de los Computadores Sistemas Operativos. Tema 1 Arquitectura Básica de los Computadores http://www.ditec.um.es/so Departamento de Ingeniería y Tecnología de Computadores Universidad de Murcia Sistemas Operativos. Tema 1 Arquitectura

Más detalles

TIPOS DE PROCESAMIENTOS

TIPOS DE PROCESAMIENTOS TIPOS DE PROCESAMIENTOS El desempeño de un computador puede tener diferentes medidas de elección para diferentes usuarios. Para un usuario individual que está ejecutando un único programa, la computadora

Más detalles

Arquitectura de Computadores. Tema 13 Memoria Virtual. Eduardo Daniel Cohen dcohen@arnet.com.ar http://www.herrera.unt.edu.

Arquitectura de Computadores. Tema 13 Memoria Virtual. Eduardo Daniel Cohen dcohen@arnet.com.ar http://www.herrera.unt.edu. Arquitectura de Computadores Tema Memoria Virtual Eduardo Daniel Cohen dcohen@arnet.com.ar http://www.herrera.unt.edu.ar/arqcom En Perspectiva: En dónde estamos ahora? Las cinco componentes clásicas de

Más detalles

Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción

Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción Tema 8 Procesadores Superescalares: Paralelismo Explícito a Nivel de Instrucción IA-64 es una arquitectura de 64 bits desarrollada conjuntamente por Intel y HP (Hewlett- Packard). Está basado en una tecnología

Más detalles

Convivencia Gestión de la Memoria

Convivencia Gestión de la Memoria Convivencia Gestión de la Memoria Dra. Carolina Mañoso Dpto. Informática y Automática.UNED Introducción (1/2) Para que un proceso esté preparado para ejecución debe estar cargado en memoria principal La

Más detalles

Sea una memoria caché en la que cada 2 20 accesos se producen 2 17 fallos. Calcule la tasa de fallos.

Sea una memoria caché en la que cada 2 20 accesos se producen 2 17 fallos. Calcule la tasa de fallos. Sea una memoria caché en la que cada accesos se producen fallos Calcule la tasa de fallos Nº de aciertos (Nº de peticiones) (Nº de fallos) Tasa aciertos h % % % 8% Nº de peticiones Nº de peticiones Tasa

Más detalles

Organización del Computador I Verano. Memoria Virtual Basado en el capítulo 5 del libro de Patterson y Hennessy

Organización del Computador I Verano. Memoria Virtual Basado en el capítulo 5 del libro de Patterson y Hennessy Organización del Computador I Verano Memoria Virtual Basado en el capítulo 5 del libro de Patterson y Hennessy Verano 204 Profesora Borensztejn Memoria Virtual Memoria Virtual es la técnica que permite

Más detalles

T E M A 2. Sistema de Memoria

T E M A 2. Sistema de Memoria T E M A 2 Sistema de Memoria 2-2 Sistema de Memoria Indice 3.- INTRODUCCIÓN AL TEMA... 2-3 3..- CONCEPTOS BÁSICOS... 2-3 3.2.- TECNOLOGÍAS DE MEMORIA... 2-3 3.3.- LOCALIDAD... 2-4 3.3..- Localidad de referencia

Más detalles

Capitulo V Administración de memoria

Capitulo V Administración de memoria Capitulo V Administración de memoria Introducción. Una de las tareas más importantes y complejas de un sistema operativo es la gestión de memoria. La gestión de memoria implica tratar la memoria principal

Más detalles

Examinaremos las características claves de las memorias y luego analizaremos el subsistema de memoria principal.

Examinaremos las características claves de las memorias y luego analizaremos el subsistema de memoria principal. GUIA 25: La memoria es un medio físico capaz de almacenar información (programas y datos) de forma temporal o permanente. Sin memoria no puede haber computadoras como las conocemos ahora. Aunque conceptualmente

Más detalles

Memoria Principal. Departamento de Arquitectura de Computadores

Memoria Principal. Departamento de Arquitectura de Computadores Memoria Principal Departamento de Arquitectura de Computadores Índice Introducción. Conceptos básicos Características de los sistemas de memoria Jerarquías de memoria Memoria Principal Características

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 2: Estructura de los sistemas de computación. 2.1 Funcionamiento de los sistemas de computación. 2.2 Ejecución de instrucciones e interrupciones

Más detalles

SISTEMAS OPERATIVOS Ciclo 2014 Plan 2012

SISTEMAS OPERATIVOS Ciclo 2014 Plan 2012 Lic. en Sistemas de Información SISTEMAS OPERATIVOS Ciclo 2014 Plan 2012 UNIDAD 6 (Parte B) GESTION DE MEMORIA ING. AGUILERA SERGIO OMAR MEMORIA VIRTUAL Todas las referencias a la memoria se traducirán

Más detalles

TEMA 8: GESTIÓN DE MEMORIA.

TEMA 8: GESTIÓN DE MEMORIA. TEMA 8: GESTIÓN DE MEMORIA. 1. Direccionamiento.. 2 1.1.- Asignación de direcciones... 2 2. Jerarquía del almacenamiento... 3 3. Gestión de memoria.. 3 3.1.- Monoprogramación. 3 3.2.- Multiprogramación..

Más detalles

Sistemas Operativos Tema 8. Gestión de memoria. 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana Belén Esteban

Sistemas Operativos Tema 8. Gestión de memoria. 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana Belén Esteban Sistemas Operativos Tema 8. Gestión de memoria 1998-2012 José Miguel Santos Alexis Quesada Francisco Santana Belén Esteban 1 Contenidos Antecedentes Técnicas básicas: recubrimientos, intercambio Gestión

Más detalles

Tema 4. Administración de la memoria

Tema 4. Administración de la memoria Tema 4 Administración de la memoria Pilar González Férez Tema 4 Administración de la memoria p./28 Índice Introducción (Carretero [C4., C4.2], Stallings [C7.]) Partición de memoria (Stallings [C7.2], Tanenbaum

Más detalles

Arquitecturas CISC y RISC

Arquitecturas CISC y RISC Arquitecturas CISC y RISC Diseño de Sistemas Digitales EL-3310 I SEMESTRE 2008 2. ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 2.1 Elementos de la arquitectura Clasificación de la arquitectura Organización

Más detalles

TEMA 6: GESTIÓN DE ENTRADA/SALIDA

TEMA 6: GESTIÓN DE ENTRADA/SALIDA 1. Introducción TEMA 6: GESTIÓN DE ENTRADA/SALIDA Función principal de un S.O.: controlar todos los dispositivos de E/S de la computadora. El Subsistema de E/S se encarga de Emitir órdenes a los dispositivos

Más detalles

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Bibliografía: William Stallings Organización y Arquitectura de computadores 5ta. Edition. Editorial Pearson Educación.- Objetivos:

Más detalles

Tema 1: Implementación del sistema de archivos

Tema 1: Implementación del sistema de archivos Tema 1: Implementación del sistema de archivos 1. Introducción 2. Implementación 3. Estructura del almacenamiento secundario Dpto. Tema Lenguajes 1: Implementación y Sistemas del Informáticos. sistema

Más detalles

Tarea 4.2 Memoria Virtual

Tarea 4.2 Memoria Virtual 1 Tarea 4.2 1. Cuál es la diferencia entre paginación simple y paginación en memoria virtual? En memoria virtual no es necesario que todas las páginas estén en marcos de la memoria principal. Las páginas

Más detalles

MEMORIA. Programación II

MEMORIA. Programación II MEMORIA Programación II Temas Subsistema de Memoria Organización de Memoria Principal Memoria Cache Subsistema de memoria Componentes de la computadora Buses Contexto actual (1) Velocidad del procesador:

Más detalles

X86 frente a PPC - Intel/AMD contra IBM

X86 frente a PPC - Intel/AMD contra IBM X86 frente a PPC - Intel/AMD contra IBM O el giro hacia RISC - Desmontando el mito del megahercio. Existen varios mitos en la informática de consumo. Uno de los más extendidos, sobre todo al usuario medio,

Más detalles

Memoria Virtual. Figura 1: Memoria Virtual

Memoria Virtual. Figura 1: Memoria Virtual 1 Memoria Virtual. Qué podemos hacer si un programa es demasiado grande para caber en la memoria disponible? Una posibilidad es usar superposiciones (overlays), como en MS-DOS: dividimos el programa en

Más detalles

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES Universidad Rey Juan Carlos ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES Estructura de un computador: conceptos básicos Luis Rincón Córcoles Licesio J. Rodríguez-Aragón Programa 1. Introducción 2. Elementos

Más detalles

Administración de memoria: Funciones y operaciones

Administración de memoria: Funciones y operaciones Administración de memoria: Funciones y operaciones Facultad de Ingeniería, UNAM Instituto de Investigaciones Económicas, UNAM Índice Introducción 1 Introducción 2 3 4 5 El administrador de memoria Es otra

Más detalles

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES. 1.- a) Explica qué es un bit de información. Qué es el lenguaje binario? Bit es la abreviatura de Binary digit. (Dígito binario). Un bit es un dígito del lenguaje binario que es el lenguaje universal usado

Más detalles

Los Microprocesadores MIA José Rafael Rojano Cáceres Arquitectura de Computadoras I Evolución Histórica de los Microprocesadores Intel Evolución de los microprocesadores Intel de la década de los 70 4004

Más detalles

Dr.-Ing. Paola Vega Castillo

Dr.-Ing. Paola Vega Castillo EL-3310 DISEÑO O DE SISTEMAS DIGITALES Dr.-Ing. Paola Vega Castillo Información n General Curso: Diseño de Sistemas Digitales Código: EL-3310 Tipo de curso: Teórico Créditos/Horas por semana: 4/4 Requisito:

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

El soporte del sistema operativo. Hace que un computador sea más fácil de usar. Permite que los recursos del computador se aprovechen mejor.

El soporte del sistema operativo. Hace que un computador sea más fácil de usar. Permite que los recursos del computador se aprovechen mejor. El soporte del sistema operativo Objetivos y funciones del sistema operativo Comodidad Hace que un computador sea más fácil de usar. Eficiencia Permite que los recursos del computador se aprovechen mejor.

Más detalles

Estructura de Computadores

Estructura de Computadores Estructura de Computadores Tema 4. El procesador Departamento de Informática Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas UNIVERSIDAD CARLOS III DE MADRID Contenido Elementos de un

Más detalles

TEMA 3. GESTIÓN DE MEMORIA

TEMA 3. GESTIÓN DE MEMORIA TEMA 3. GESTIÓN DE MEMORIA 3.1. Introducción 3.2. Memoria virtual 3.2.1. Paginación 3.2.2. Segmentación 3.2.3. Segmentación paginada 3.2.4. Paginación por demanda 3.2.5. Algoritmos de reemplazo de página

Más detalles

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles Organización del Computador 1 Máquina de von Neumann Jerarquía de Niveles Inicios de la computación Turing y Church sientan las bases teóricas de la computación Máquina de Turing Máquina teórica compuesta

Más detalles

PRACTICA 2 Ejercicio 3

PRACTICA 2 Ejercicio 3 PRACTICA 2 Ejercicio 3 Análisis de la Memoria Cache L1 de Datos para Procesadores Superescalares con Ejecución uera de Orden DESCRIPCIÓN GENERAL El objetivo de este ejercicio práctico consiste en obtener

Más detalles

EL MICROPROCESADOR INTRODUCCION

EL MICROPROCESADOR INTRODUCCION INTRODUCCION El microprocesador o CPU es un dispositivo electrónico digital, integrado, programable y de actuación secuencial que constituye el cerebro del computador. Funcionalmente, es pues un dispositivo

Más detalles

Tema 4. Gestión Avanzada de Memoria

Tema 4. Gestión Avanzada de Memoria Departamento de Ingeniería y Tecnología de Computadores Universidad de Murcia Índice 1 El sistema de gestión de memoria 2 Generación de un ejecutable Bibliotecas Formato del ejecutable Mapa de memoria

Más detalles

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles Ángel Serrano Sánchez de León

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles Ángel Serrano Sánchez de León Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles Ángel Serrano Sánchez de León Programa. Introducción. 2. Elementos de almacenamiento. 3. Elementos de proceso. 4. Elementos de interconexión.

Más detalles

PARTICIONES Y FORMATOS

PARTICIONES Y FORMATOS PARTICIONES Y FORMATOS 1. Función de un disco duro Un disco duro es un dispositivo que permite el almacenamiento y recuperación de grandes cantidades de información. Los discos duros forman el principal

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

Memoria Compartida Distribuida (DSM) Sistema de Archivos

Memoria Compartida Distribuida (DSM) Sistema de Archivos Memoria Compartida Distribuida (DSM) La memoria compartida distribuida es una abstracción que se propone como alternativa a la comunicación por mensajes. Memoria compartida basada en páginas: este esquema

Más detalles

Sin embargo, la realidad es otra: Las memorias grandes son lentas Las memorias rápidas son pequeñas (y caras)

Sin embargo, la realidad es otra: Las memorias grandes son lentas Las memorias rápidas son pequeñas (y caras) Introducción Memoria Ideal Rápida, grande y barata Sin embargo, la realidad es otra: Las memorias grandes son lentas Las memorias rápidas son pequeñas (y caras) Las tecnologías principales de memoria son

Más detalles

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores 7. Memoria Caché 1. Fundamento e Introducción 2. Estructura 3. Políticas de Ubicación 4. Políticas de Sustitución 5. Políticas de Escritura 6. Otras Consideraciones Arquitectura

Más detalles

2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 5 ENTRADA/SALIDA. JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ Tema 5.

2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 5 ENTRADA/SALIDA. JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ Tema 5. ARQUITECTURAS DE COMPUTADORES 2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 5 ENTRADA/SALIDA JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ Tema 5. Unidad de E/S 1 Unidad de E/S Indice Introducción.

Más detalles

Convivencia. Gestión del Sistema de Entrada/Salida

Convivencia. Gestión del Sistema de Entrada/Salida Convivencia Gestión del Sistema de Entrada/Salida Dra. Carolina Carolina Mañoso Mañoso Dpto. Dpto. Imformática Informática y y Automática.UNED Introducción (1/2) El sistema de Entrada/Salida es la parte

Más detalles

Clase 20: Arquitectura Von Neuman

Clase 20: Arquitectura Von Neuman http://computacion.cs.cinvestav.mx/~efranco @efranco_escom efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Arquitectura de una computadora Elementos básicos de una

Más detalles

COMPUTADORES MULTINUCLEO. Stallings W. Computer Organization and Architecture 8ed

COMPUTADORES MULTINUCLEO. Stallings W. Computer Organization and Architecture 8ed COMPUTADORES MULTINUCLEO Stallings W. Computer Organization and Architecture 8ed Computador multinucleo Un computador multinúcleocombina dos o mas procesadores (llamados núcleos) en una única pieza de

Más detalles

Introducción a la Entrada/Salida

Introducción a la Entrada/Salida Introducción a la Entrada/Salida Organización de entrada/salida La familia de procesadores 80x86, presente en el IBM PC, utiliza la arquitectura Von Neumann, que puede verse en la figura 1. El denominado

Más detalles

Gestión de Memoria. Curso 2005-2006. AT3148 Ampliación de Sistemas Operativos A. Sánchez-Macián, J.A. Maestro, M.P.

Gestión de Memoria. Curso 2005-2006. AT3148 Ampliación de Sistemas Operativos A. Sánchez-Macián, J.A. Maestro, M.P. Gestión de Memoria Transparencias basadas en el libro de referencia: Sistemas operativos. Una visión aplicada. J. Carretero, F.García, P. de Miguel, F. Pérez. McGraw Hill 2001 Curso 2005-2006 Contenido

Más detalles

Memoria de Acceso Aleatorio. Dispositivos de Almacenamiento Masivo

Memoria de Acceso Aleatorio. Dispositivos de Almacenamiento Masivo Memoria. Definiciones Componente de una computadora que retiene datos informáticos durante algún intervalo de tiempo. Consiste en la capacidad de registrar datos y volver a incorporarlos en determinado

Más detalles

Tema 3. Estructura física y lógica del Disco Duro

Tema 3. Estructura física y lógica del Disco Duro 1.-FUNCIÓN DE UN DISCO DURO... 2 2. ESTRUCTURA FÍSICA... 2 2.1 Elementos de un disco duro... 2 2.2 Funcionamiento de una unidad de disco duro... 2 2.3. Estructura física: cabezas, cilindros y sectores...

Más detalles

ARQUITECTURA DE COMPUTADORAS

ARQUITECTURA DE COMPUTADORAS ARQUITECTURA DE COMPUTADORAS Información General Objetivos Al terminar el curso, el estudiante estará capacitado para: 1. Manejar medidas de performance que permitan comparar diversos sistemas de Computadora.

Más detalles

Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras

Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras http://www.herrera.unt.edu.ar/arqcom dcohen@herrera.unt.edu.ar Temario 1. Evolución histórica. 2. Repaso de conceptos importantes.

Más detalles

Entorno de Ejecución del Procesador Intel Pentium

Entorno de Ejecución del Procesador Intel Pentium Arquitectura de Ordenadores Arquitectura del Procesador Intel Pentium Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Entorno de Ejecución del Procesador

Más detalles

Hardware: dentro de la caja. Introducción a la Informática 2010-2011

Hardware: dentro de la caja. Introducción a la Informática 2010-2011 Hardware: dentro de la caja Introducción a la Informática 2010-2011 Objetivos Conocer cómo se almacena y manipula la información dentro de los ordenadores Analizar la estructura y organización básica de

Más detalles

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:

Más detalles

FUNCIONES DE UNA COMPUTADORA

FUNCIONES DE UNA COMPUTADORA FUNCIONES DE UNA COMPUTADORA Vamos ahora a profundizar un poco más en el esquema básico expuesto anteriormente, dando algunos detalles sobre cada una de las funciones llevadas a cabo por el ordenador:

Más detalles

Contenido. Capítulo 1. Capítulo 3. Capítulo 2. Alfaomega. Arquitectura de computadoras - Patricia Quiroga

Contenido. Capítulo 1. Capítulo 3. Capítulo 2. Alfaomega. Arquitectura de computadoras - Patricia Quiroga XI Contenido Capítulo 1 Evolución del procesamiento de datos... 1 1.1 Organización y arquitectura de una computadora... 2 1.2 Estratificación del software... 3 1.3 Evolución del procesamiento de datos...

Más detalles

El procesador. (mrebollo@dsic.upv.es) Sistemas Informáticos y Computación. Facultad de Administración y Dirección de Empresas

El procesador. (mrebollo@dsic.upv.es) Sistemas Informáticos y Computación. Facultad de Administración y Dirección de Empresas El procesador Apellidos, Nombre Departamento Centro Rebollo Pedruelo, Miguel (mrebollo@dsic.upv.es) Sistemas Informáticos y Computación Facultad de Administración y Dirección de Empresas 1. Resumen El

Más detalles

Tecnologías y Arquitecturas

Tecnologías y Arquitecturas Tecnologías y Arquitecturas Parte II Andrés Djordjalian Seminario de Sistemas Embebidos 19 de mayo de 2011 Facultad de Ingeniería de la UBA 06:13 1 de 22 Temas de esta Clase Medición

Más detalles

RAID. Los detalles de las características segunda y tercera, cambian según los distintos niveles RAID. RAID 0 no soporta la tercera característica.

RAID. Los detalles de las características segunda y tercera, cambian según los distintos niveles RAID. RAID 0 no soporta la tercera característica. RAID Como se dijo anteriormente, el ritmo de mejora de prestaciones en memoria secundaria ha sido considerablemente menor que en procesadores y en memoria principal. Esta desigualdad ha hecho, quizás,

Más detalles

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores Ricardo.Sanz@upm.es Curso 2004-2005 Arquitectura de Computadores Arquitectura de computadores es la disciplina que estudia la organización y funcionamiento de los computadores

Más detalles

La memoria principal. Los subsistemas de E/S. Los buses del sistema

La memoria principal. Los subsistemas de E/S. Los buses del sistema GUIA 23: MEMORIA E/S La estructura básica de la mayoría de los ordenadores actuales se representa mediante los siguientes elementos básicos: La Unidad Central de Procesamiento, CPU La memoria principal

Más detalles

Convivencia. Gestión del Sistema de Archivos

Convivencia. Gestión del Sistema de Archivos Convivencia Gestión del Sistema de Archivos Dra. Carolina Carolina Mañoso Mañoso Dpto. Dpto. Imformática Informática y y Automática.UNED Introducción Se necesitan tres condiciones para el almacenamiento

Más detalles

Unidad I: Conceptos Básicos de Programación. Prof. Eliana Guzmán U. Semestre: A-2015

Unidad I: Conceptos Básicos de Programación. Prof. Eliana Guzmán U. Semestre: A-2015 Unidad I: Conceptos Básicos de Programación Digital Prof. Eliana Guzmán U. Semestre: A-2015 1.11 Introducción En esta unidad se hace una introducción a las computadoras y a los lenguajes de programación,

Más detalles

Sistemas operativos. Tema 7: Gestión n de memoria

Sistemas operativos. Tema 7: Gestión n de memoria Sistemas operativos Tema 7: Gestión n de memoria La memoria principal La memoria es el componente central en la arquitectura de un computador. A menudo, el único dispositivo de almacenamiento al que la

Más detalles

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática Tema 1 Introducción. Arquitectura básica y Sistemas Operativos Fundamentos de Informática Índice Descripción de un ordenador Concepto básico de Sistema Operativo Codificación de la información 2 1 Descripción

Más detalles

DEPARTAMENTO DE ELECTRONICA. Microprocesadores 1121060

DEPARTAMENTO DE ELECTRONICA. Microprocesadores 1121060 DEPARTAMENTO DE ELECTRONICA Microprocesadores 1121060 Microprocesadores 1121060 Tema 1. Operación básica de un Microprocesador 1. a los microprocesadores 2. Arquitectura Básica de un microprocesador. 3.

Más detalles

Arquitectura de los Ordenadores (Teoría) Final Junio 2008. Mañana Pág 1 APELLIDOS Y NOMBRE GRUPO Nº EXPEDIENTE

Arquitectura de los Ordenadores (Teoría) Final Junio 2008. Mañana Pág 1 APELLIDOS Y NOMBRE GRUPO Nº EXPEDIENTE Arquitectura de los Ordenadores (Teoría) Final Junio 2008. Mañana Pág 1 1).- Dada la estructura de unidades funcionales (FD i : unidades de fetch y decodificación; EJ 1 y EJ 2 : unidades de ejecución de

Más detalles

Tema 1 Estructuras de interconexión de un computador.

Tema 1 Estructuras de interconexión de un computador. Estructura de Computadores II 1 Tema 1 Estructuras de interconexión de un computador. En el nivel jerárquico superior, un computador consta de la UCP, la memoria y la unidad de E/S. Se puede describir

Más detalles

Arquitectura de computadoras. Unidad 3. Arquitectura de computadoras / (Rodriguez Ricardo) Diapositiva 1

Arquitectura de computadoras. Unidad 3. Arquitectura de computadoras / (Rodriguez Ricardo) Diapositiva 1 Arquitectura de computadoras Unidad 3 Arquitectura de computadoras / (Rodriguez Ricardo) Diapositiva 1 Unidades de medida datos y transferencias Conversiones Un bit (binary digit) es la información más

Más detalles

TEMA 1. CONCEPTO DE ORDENADOR: ESTRUCTURA Y FUNCIONAMIENTO

TEMA 1. CONCEPTO DE ORDENADOR: ESTRUCTURA Y FUNCIONAMIENTO TEMA 1. CONCEPTO DE ORDENADOR: ESTRUCTURA Y FUNCIONAMIENTO 1.1 Introducción Los ordenadores necesitan para su funcionamiento programas. Sin un programa un ordenador es completamente inútil. Para escribir

Más detalles

Administración de memoria: Asignación de memoria

Administración de memoria: Asignación de memoria Administración de memoria: Asignación de memoria Facultad de Ingeniería, UNAM Instituto de Investigaciones Económicas, UNAM Índice Memoria contigua 1 Memoria contigua 2 3 Compartiendo la memoria desde...

Más detalles

4 Gestión de la memoria

4 Gestión de la memoria 4 Gestión de la memoria En este capítulo se estudian las técnicas de gestión de la memoria, partiendo de las utilizadas en los primeros sistemas operativos para llegar a la memoria virtual, a la que se

Más detalles

La arquitectura del 8086/8088

La arquitectura del 8086/8088 Repasamos aquí la arquitectura de un PC. Para más información sobre lo aquí expuesto se puede consultar [PA01] y los capítulos iniciales de [Tej01], [Rod00] y [Nor01]. Anatomía del PC A grandes rasgos,

Más detalles

Arquitectura de Computadores II Clase #16

Arquitectura de Computadores II Clase #16 Arquitectura de Computadores II Clase #16 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Organización general Superescalar Varios pipelines. 2 operaciones enteras,

Más detalles

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas. Contenido Sistema de archivos Operaciones sobre archivos Métodos de acceso a archivos Directorio Sistema de archivos por capas Espacio libre Sistema de archivos Proporciona el mecanismo para el almacenamiento

Más detalles

1 LA INFORMACION Y SU REPRESENTACION

1 LA INFORMACION Y SU REPRESENTACION 1 LA INFORMACION Y SU REPRESENTACION 1.1 Sistemas de numeración Para empezar a comprender cómo una computadora procesa información, debemos primero entender cómo representar las cantidades. Para poder

Más detalles

Organizacion del Computador

Organizacion del Computador Universidad Nacional de Ingeniería Facultad de Ciencias Introducción a la Ciencia de la Computación Organizacion del Computador Prof: J. Solano 2011-I Objetivos Despues de estudiar este cap. el estudiante

Más detalles

FUNDAMENTOS DE INFORMATICA

FUNDAMENTOS DE INFORMATICA FUNDAMENTOS DE INFORMATICA TEMAS QUE SE TRATARÁN: Arquitectura Interna Sistemas Operativos Programación en Visual Basic Bases de Datos Redes e Internet 1 FUNDAMENTOS DE INFORMATICA Tema 1: Arquitectura

Más detalles

Fundamentos de Computación e Informática Algoritmos Profesor : Fernando Espinoza S.

Fundamentos de Computación e Informática Algoritmos Profesor : Fernando Espinoza S. Fundamentos de Computación e Informática Algoritmos Profesor : Fernando Espinoza S. Objetivos Principales del Curso Comprender los sistemas computacionales modernos. Desarrollar la lógica de programación

Más detalles

Técnicas empleadas. además de los discos las controladoras.

Técnicas empleadas. además de los discos las controladoras. RAID Introducción En los últimos años, la mejora en la tecnología de semiconductores ha significado un gran incremento en la velocidad de los procesadores y las memorias principales que, a su vez, exigen

Más detalles

Sistemas de Computadoras Índice

Sistemas de Computadoras Índice Sistemas de Computadoras Índice Concepto de Computadora Estructura de la Computadora Funcionamiento de la Computadora Historia de las Computadoras Montando una Computadora Computadora Un sistema de cómputo

Más detalles

MASTER DEGREE: Industrial Systems Engineering

MASTER DEGREE: Industrial Systems Engineering PAC- Performance-centered Adaptive Curriculum for Employment Needs Programa ERASMUS: Acción Multilateral - 517742-LLP-1-2011-1-BG-ERASMUS-ECUE MASTER DEGREE: Industrial Systems Engineering ASIGNATURA ISE3:

Más detalles

Arquitecturas de computadoras

Arquitecturas de computadoras Arquitecturas de computadoras Colaboratorio Nacional de Computación Avanzada (CNCA) 2014 Contenidos 1 Computadoras 2 Estación de Trabajo 3 Servidor 4 Cluster 5 Malla 6 Nube 7 Conclusiones Computadoras

Más detalles

A continuación se representan los componentes básicos de un sistema computacional (ordenador). Figura 5.6.1 Componentes básicos de un ordenador.

A continuación se representan los componentes básicos de un sistema computacional (ordenador). Figura 5.6.1 Componentes básicos de un ordenador. 5.6 ESTRUCTURA BÁSICA DE UN ORDENADOR. TERMINOLOGÍA INFORMÁTICA Las aeronaves modernas utilizan sofisticados sistemas de aviónica que necesitan de sistemas de computación basados en microprocesadores.

Más detalles

TIPOS BÁSICOS DE ARQUITECTURAS DE MICROPROCESADORES

TIPOS BÁSICOS DE ARQUITECTURAS DE MICROPROCESADORES ANÁLISIS DE ARQUITECTURAS MODERNAS DE MICROPROCESADORES UTILIZADOS EN CIRCUITOS INTEGRADOS (CISC, RISC, VLIW, EPIC), ASÍ COMO ARQUITECTURAS PARA EL PROCESAMIENTO MULTIMEDIA Y DIGITAL DE SEÑALES DSP La

Más detalles

INTRODUCCIÓN A LA INFORMÁTICA

INTRODUCCIÓN A LA INFORMÁTICA INTRODUCCIÓN A LA INFORMÁTICA Desde sus orígenes, el hombre ha tenido necesidad de la información. Esta información, que en principio se recogía de forma oral, con la aparición de la escritura, comenzó

Más detalles

La Arquitectura de las Máquinas Virtuales.

La Arquitectura de las Máquinas Virtuales. La Arquitectura de las Máquinas Virtuales. La virtualización se ha convertido en una importante herramienta en el diseño de sistemas de computación, las máquinas virtuales (VMs) son usadas en varias subdiciplinas,

Más detalles

Universidad de Valladolid

Universidad de Valladolid Universidad de Valladolid Departamento de Informática Escuela Técnica Sup. de Ingeniería Informática Camino del Cementerio s/n. Valladolid Tel.:(983) 423669 Fax:(983) 423671 Cuestiones aparecidas en los

Más detalles

Fundamento de Informática Teórica(2003) Prof. Dr. Eric Jeltsch F. ORGANIZACION FISICA DE LOS SISTEMAS DE BASE DE DATOS

Fundamento de Informática Teórica(2003) Prof. Dr. Eric Jeltsch F. ORGANIZACION FISICA DE LOS SISTEMAS DE BASE DE DATOS ORGANIZACION FISICA DE LOS SISTEMAS DE BASE DE DATOS La organización física de una base de datos es un tópico extenso y se aborda en detalle, principalmente en la asignatura Base de Datos, y digo principalmente

Más detalles

Arquitectura Segmentada: Conceptos básicosb

Arquitectura Segmentada: Conceptos básicosb Arquitectura Segmentada: Conceptos básicosb Diseño de Sistemas Digitales EL-3310 I SEMESTRE 2008 4 ARQUITECTURA SEGMENTADA (PIPELINING) (4 SEMANAS) 4.1 Conceptos básicos de la arquitectura segmentada Paralelismo

Más detalles

PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline:

PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline: PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline: Observemos que la técnica de Pipelining no mejora el tiempo de cada tarea, sino el tiempo de toda la carga de trabajo.

Más detalles