
El procesador Broadway esta basado en los PowerPC G3 de IBM. He estado buscando informacion mas especifica sobre el procesador de la Wii pero no he conseguido nada. Pongo informacion sobre el PowerPC G3 pero no puedo confirmar si es igual para el procesador Broadway.
Características
- Cache de datos e instrucciones separadas.
- 32 Kbytes.
- Asociativa por conjuntos de 8 vías.
- Indexada por la dirección efectiva.
- Tags por la dirección física.
- Algoritmo pseudo LRU de reemplazamiento.
- Cada bloque de la cache es de 32 bytes (8 palabras).
- Dos bits de coherencia en cada bloque de la cache de datos:
- Modified, Exclusive, Invalid
- Un bit de coherencia en cada bloque de la cache de instrucciones: Invalid, Valid
Cache de datos
- Modified: El bloque direccionado está en la cache, y está modificado respecto a lo almacenado en el subsistema de memoria.
- Exclusive: El bloque direccionado está en la cache, y esta cache tiene propiedad exclusiva sobre el bloque. Sólo se encuentra en la cache de este procesador. Los datos del bloque son coherentes respecto al bloque en el subsistema de memoria.
- Invalid: El bloque direccionado no contiene datos válidos o no se encuentra en la cache.
Cache L2
- SRAMs síncronas externas para el almacenamiento de datos de hasta 1 Mbyte.
- Asociativa por conjuntos de 2 vías con 4096 entradas.
- Está organizada en líneas de 64 o 128 bytes, sudivididas en bloques de 32 bytes (8 palabras).
- Cada bloque tiene bits de estado valid y modified.
- Acepta múltiples accesos simultáneos.
- Cache de instrucciones: solicitud de instrucción
- Cache de datos: operación de carga o dos almacenamientos
- Peticiones desde la cache L1 son buscadas en los tags de la L2 y servidas por la L2 si se encuentran, en caso de fallo, son reenviadas al bus.
- Soporta sistemas de coherencia de cache a través de snooping.
- Da servicio a peticiones snoop desde el bus.
- Establece prioridad para las peticiones.
- Normalmente trabaja en modo write back.
Predictores de salto en IBM G3
Unidad de procesado de saltoes ( BPU ): predicción estática y dinámica de los saltoes.
Componentes de la BPU
BHT: tabla de histórico de saltoes implementada mediante una caché de 512 entradas y 2 bits por entrada. Predictor local de 2 bits.
BTIC: cache de direcciones de instrucciones de los saltoes (BTB) implementada mediante una caché asociativa por conjuntos de 64 entradas, 4 vías y 16 entradas por conjunto. Almacena los saltoes más recientemente tomados.
Registros de control: CR o registro condicional sobre el cual se realizan la operaciones en los saltoes condicionales, CTR o registro contador que almacena dirección de salto para los “bcctr”, y LR o registro de enlace que almacena la dirección de salto para los “bcl”.
Características de la BPU
Analiza las instrucciones provenientes de caché, 4 instrucciones por ciclo. Es capaz de procesar 1 salto por ciclo, realizando las operaciones necesarias en el registro CR si se trata de un salto condicional.
Si las dependencias de datos impiden resolver el salto inmediatamente se predice el resultado del salto.
El predictor a utilizar, estático o dinámico depende del valor asignado al registro hardware HID0[BHT]:
HID0[BHT] = 1, predicción dinámica
HID0[BHT] = 0, predicción estática
Ante una predicción realizada no se podrá escribir a registro el resultado de la instrucción hasta resolver el salto, ejecución especulativa.
En lo que se resuelve un primer salto se puede hacer la predicción de un segundo salto, pero las nuevas instrucciones a ejecutar han de esperar en la cola de instrucciones hasta saber si la predicción anterior fue correcta.
Tras un salto tomado o predicho como tomado un éxito en la BTIC supone un ahorro de 1 ciclo en la carga de las nuevas instrucciones en la cola.
Predicción estática de los saltos
En la arquitectura PowerPC esté tipo de predicción está implementada como parte del código de instrucción del propio salto.
Las instrucciones de salto cuentan con un campo denominado BO-field que permite realizar una predicción por software sobre la resolución de cada salto.
El bit menos significativo del campo BO-field, bit “y”, determinará si el salto se toma o no, y = 1 se toma,
y = 0 no se toma.
Se utiliza sólo si HID0[BHT] = 0.
Predicción dinámica de los saltos
Se realiza haciendo uso de la BHT o predictor local de 2 bits que almacena la predicción asociada a cada salto.
Esta caché contiene 512, por lo que se utilizan los 9 bits menos significativos de la instrucción para indexar las predicciones asociadas a cada salto.
Para cada salto la predicción puede ser “fuertemente no tomada”, “no tomada”, “tomada” o “fuertemente tomada”.
Se utiliza sólo si HID0[BHT] = 1.
Para tener mas informacion respecto esta jerarquia se tiene que acceder a los siguientes temas de mo Blog. En ellos se especifica mucho mas afondo todos los distintos aspectos respecto al Broadway.
-RISC vs CISC (Usa la tecnologia RISC)
-CPU de la Wii -Broadway-
-Organizacion y rendimiento de la memoria cache.
INTRODUCCION
Una memoria caché es una memoria en la que se almacenas una serie de datos para su rápido acceso. Existen muchas memorias caché (de disco, de sistema, incluso de datos, como es el caso de la caché de Google), pero en este tutorial nos vamos a centrar en la caché de los procesadores.
Básicamente, la memoria caché de un procesador es un tipo de memoria volátil (del tipo RAM), pero de una gran velocidad.
En la actualidad esta memoria está integrada en el procesador, y su cometido es almacenar una serie de instrucciones y datos a los que el procesador accede continuamente, con la finalidad de que estos accesos sean instantáneos. Estas instrucciones y datos son aquellas a las que el procesador necesita estar accediendo de forma continua, por lo que para el rendimiento del procesador es imprescindible que este acceso sea lo más rápido y fluido posible.
Caché de memoria: De acuerdo a la ubicación física que tienen en elsistema se denominan o identifican por niveles:
-Nivel 1 (L1): Conocido como caché interno, es el nivel más cercano a la CPU (está en el mismo núcleo) con lo que el acceso se produce a la velocidad de trabajo del procesador (la máxima velocidad). Presenta un tamaño muy reducido, en Intel (4 a 32 KB), en VIA/Cyrix (1 a 64 KB), en AMD (8 a 128 KB).
-Nivel 2 (L2): Conocido como caché externo, inicialmente se instalaba en la placa base (en el exterior de la CPU). A partir de los procesadores Pentium 4 vienen incorporado en el procesador (no precisamente en el núcleo). El nivel L2 apareció con el procesador Pentium Pro, es una memoria más lenta que L1, pero de mayor capacidad. Los tamaños típicos de la memoria caché L2 oscilan en la actualidad entre 256 KB y 4 MB.
-Nivel 3 (L3): Se encuentra en algunas placas base, procesadores y tarjetas de interfaz. El procesador de Intel Itanium trae contenida en su cartucho al nivel L3 que soporta un tamaño hasta de 4 MB, y el Itanium 2 tolera hasta 6 MB de caché L3.
-Nivel 4 (L4): Se encuentra ubicado en los periféricos y en algunos procesadores como el Itanium.
Caché de memoria RAM: La memoria principal RAM suele hacer de caché para los dispositivos de almacenamiento y otros tipos de periféricos.
Caché en disco duro: Utilizadas por los navegadores Web y algunos periféricos.
La búsqueda de información comienza por la caché L1, y se va subiendo nivel a nivel en caso de no encontrar lo que se busca en el nivel actual. Cuantas más capas se asciende, mayor es el tiempo de espera. Pero, a mayor cercanía a la CPU, la probabilidad de encontrar lo que se busca es mayor. Esta forma de trabajo resulta una excelente relación de compromiso entre diversos factores, y consigue mejorar el rendimiento del ordenador de forma notable.
DISEÑO DE LA MEMORIA CACHE
En el diseño de la memoria cache se deben considerar varios factores que influyen directamente en el rendimiento de la memoria y por lo tanto en su objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria. Estos factores son las políticas de ubicación, extracción, reemplazo, escritura y el tamaño de la cache y de sus bloques.
Política de ubicación
Decide dónde debe colocarse un bloque de memoria principal que entra en la memoria cache. Las más utilizadas son:
Directa: Al bloque i-ésimo de memoria principal le corresponde la posición i módulo n, donde n es el número de bloques de la memoria cache.
Asociativa: Cualquier bloque de memoria principal puede ir en cualquiera de los n bloques de la memoria cache.
Asociativa por conjuntos: La memoria cache se divide en k conjuntos de bloques, así al bloque i-ésimo de memoria principal le corresponde el conjunto i módulo k. Dicho bloque de memoria podrá ubicarse en cualquier posición de ese conjunto.
Política de extracción
La política de extracción determina cuándo y qué bloque de memoria principal hay que traer a memoria cache. Existen dos políticas muy extendidas:
Por demanda: Un bloque sólo se trae a memoria cache cuando ha sido referenciado y se produzca un fallo.
Con prebúsqueda: Cuando se referencia el bloque i-ésimo de memoria principal, se trae además el bloque (i+1)-esimo. Esta política se basa en la propiedad de localidad espacial de los programas.
Política de reemplazo
Determina qué bloque de memoria cache debe abandonarla cuando no existe espacio disponible para un bloque entrante. Básicamente hay cuatro políticas que son:
Aleatoria: El bloque es reemplazado de forma aleatoria.
FIFO: Se usa un algoritmo First In First Out FIFO (primero en entrar es el primero en salir) para determinar qué bloque debe abandonar la cache. Este algoritmo generalmente es poco eficiente.
Menos recientemente usado (LRU): Se sustituye el bloque que hace más tiempo que no se ha utilizado.
Menos frecuentemente usado (LFU): Se reemplaza el bloque que se ha usado con menos frecuencia.
Siendo la Aleatoria y la LRU las de mejor rendimiento.
Política de escritura
Determina cuándo se actualiza la información en memoria principal cuando se ha escrito en memoria cache. Existen dos políticas principales:
Escritura inmediata o escritura directa: En inglés Write Through. Cuando se escribe en un bloque que se encuentra en memoria cache, la información se modifica también simultáneamente en memoria principal, manteniendo así la coherencia en todo momento. Suele combinarse con la técnica de "No carga en escritura" (No Write Allocation) que significa que, cuando haya que escribir en un bloque que no se encuentra en la cache, la modificación se realizará únicamente en memoria principal, sin traer dicho bloque a cache, y además sólo se actualizará la palabra concreta que haya cambiado.
Escritura aplazada o post-escritura: En inglés Write Back. Cuando se escribe en un bloque que se encuentra en memoria cache, queda marcado como basura usando un bit especial llamado normalmente dirty bit o bit de basura. Cuando el bloque sea desalojado de memoria cache (mediante la correspondiente política de reemplazo), se comprueba el bit de basura, y si está activado se escribe la información de dicho bloque en memoria principal. Esta política suele combinarse con la técnica de "Carga en escritura" (Write Allocation), que significa que, cuando haya que escribir en un bloque que no se encuentra en la cache, traeremos a cache el bloque en cuestión y lo modificaremos ahí.
AGP--(Accelerated/Advance Graphics Port, puerto de gráficos acelerado/avanzado)
Exclusivo para el uso de tarjetas gráficas.
Es un bus desarrollado por en 1996 como solución a los cuellos de botella que se producían en las tarjetas gráficas que usaban el bus PCI. El diseño parte de las especificaciones 2.1.
El bus AGP es de 32 bit como pero cuenta con notables diferencias como 8 canales mas adicionales para acceso a la memoria. La velocidad del es de 66 MHz.
El bus AGP cuenta con diferentes modos de funcionamiento.
AGP 1X: velocidad 66 MHz con una tasa de transferencia de 264 MB/s y funcionando a un voltaje de 3,3V.
AGP 2X: velocidad 133 MHz con una tasa de transferencia de 528 MB/s y funcionando a un voltaje de 3,3V.
AGP 4X: velocidad 266 MHz con una tasa de transferencia de 1 GB/s y funcionando a un voltaje de 3,3 o 1,5V para adaptarse a los diseños de las tarjetas gráficas.
AGP 8X: velocidad 533 MHz con una tasa de transferencia de 2 GB/s y funcionando a un voltaje de 0,7V o 1,5V.
Estas tasas de transferencias se consiguen aprovechando los ciclos de reloj del mediante un multiplicador pero sin modificarlos físicamente.
El bus AGP actualmente se utiliza exclusivamente para conectar , por lo que sólo suele haber una ranura. Dicha ranura mide unos 8 cm y se encuentra a un lado de las ranuras
PCI-Expressl bus PCI Express (Interconexión de Componentes Periféricos Express, también escrito PCI-E o 3GIO en el caso de las "Entradas/Salidas de Tercera Generación"), es un bus de interconexión que permite añadir placas de expansión a un ordenador. El bus PCI Express fue desarrollado en julio de 2002. A diferencia del bus PCI, que se ejecuta en una interfaz paralela, el bus PCI Express se ejecuta en una interfaz en serie, lo que permite alcanzar un ancho de banda mucho mayor que con el bus PCI.
PCIe 1.1 puede transferir datos a 250 MB/s en cada dirección por carril. Con un máximo de 32 carriles, PCIe permite una velocidad combinada de transferencia de 8 GB/s en cada dirección. Para poner esto en perspectiva, un sólo carril permite una transferencia del doble de datos que un PCI normal, cuatro carriles permiten la misma velocidad que la versión más rápida del PCI-X 1.0, y ocho carriles permiten una transferencia comparable a versión más rápida de AGP.
PCIUn Peripheral Component Interconnect (PCI, "Interconexión de Componentes Periféricos") consiste en un bus de ordenador estándar para conectar dispositivos periféricos directamente a su placa base. Estos dispositivos pueden ser circuitos integrados ajustados en ésta (los llamados "dispositivos planares" en la especificación PCI) o tarjetas de expansión que se ajustan en conectores. Es común en PCs, donde ha desplazado al ISA como bus estándar, pero también se emplea en otro tipo de ordenadores.
* Reloj de 33,33 MHz con transferencias síncronas
* Ancho de bus de 32 bits o 64 bits
* Tasa de transferencia máxima de 133 MB por segundo en el bus de 32 bits (33,33 MHz × 32 bits ÷ 8 bits/byte = 133 MB/s)
* Tasa de transferencia máxima de 266 MB/s en el bus de 64 bits.
* Espacio de dirección de 32 bits (4 GB)
* Espacio de puertos I/O de 32 bits (actualmente depreciado)
* 256 bytes de espacio de configuración.
* 3,3 V o 5 V, dependiendo del dispositivo
* reflected-wave switching
INTRODUCCION
Las computadoras electrónicas modernas son una herramienta esencial en muchas áreas:industria, gobierno, ciencia, educación,..., en realidad en casi todos los campos de nuestras vidas.
El papel que juegan los dispositivos periféricos de la computadora es esencial; sin tales dispositivos ésta no sería totalmente útil. A través de los dispositivos periféricos podemos introducir a la computadora datos que nos sea útiles para la resolución de algún problema y por consiguiente obtener el resultado de dichas operaciones, es decir; poder comunicarnos con la computadora.
La computadora necesita de entradas para poder generar salidas y éstas se dan a través de dos tipos de dispositivos periféricos existentes:
• Dispositivos periféricos de entrada.
• Dispositivos periféricos de salida.
DISPOSITIVOS
Los dispositivos son regímenes definibles, con sus variaciones y transformaciones. Presentan líneas de fuerza que atraviesan umbrales en función de los cuales son estéticos, científicos, políticos, etc. Cuando la fuerza en un dispositivo en lugar de entrar en relación lineal con otra fuerza, se vuelve sobre sí misma y se afecta, no se trata de saber ni de poder, sino de un proceso de individuación relativo a grupos o personas que se sustrae a las relaciones de fuerzas establecidas como saberes constituidos.
LOS DISPOSITIVOS DE ENTRADA/SALIDA:
Son aquellos que permiten la comunicación entre la computadora y el usuario.
DISPOSITIVOS DE ENTRADA:
Son aquellos que sirven para introducir datos a la computadora para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Los dispositivos de entrada convierten la información en señales eléctricas que se almacenan en la memoria central.
Los dispositivos de entrada típicos son los teclados, otros son: lápices ópticos, palancas de mando (joystick), CD-ROM, discos compactos (CD), etc. Hoy en día es muy frecuente que el usuario utilice un dispositivo de entrada llamado ratón que mueve un puntero electrónico sobre una pantalla que facilita la interacción usuario-máquina.
DISPOSITIVOS DE SALIDA:
Son los que permiten representar los resultados (salida) del proceso de datos. El dispositivo de salida típico es la pantalla o monitor. Otros dispositivos de salida son: impresoras (imprimen resultados en papel), trazadores gráficos (plotters), bocinas, entre otros...
ARQUITECTURA
El hardware asociado con un dispositivo de E/S consta de cuatro elementos básicos:
Un bus para comunicarse con la CPU y es compartido entre varios dispositivos.
Un puerto que consta de varios registros:
Estado-indica si esta ocupado, los datosestán listos, o ha ocurrido un error.
Control-operación que ha de realizar.
Datos_entrada-datos a enviar a CPU.
Datos_salida-datos recibidos de la CPU.
Un controlador que recibe ordenes del bus del sistema, traduce ordenes en acciones del dispositivo, y lee/escribe datos desde/en el bus del sistema.
El propio dispositivo.
TECNICAS E/S:
ESPERA DE RESPUESTA
Los pasos a seguir al usar espera de respuesta son:
-CPU espera hasta que el estado sea libre.
-CPU ajusta el registro de ordenes y datos-salida, si la operación es de salida.
-CPU ajusta el estado a orden-preparada.
-El controlador reacciona a ordenpreparada y pone estado a ocupado. Lee registro de ordenes y ejecuta orden, pone un valor en datos-salida, si es una orden
de salida.
Suponiendo que la orden tiene éxito, el controlador cambia el estado a ocioso. La CPU observa el cambio a ocioso y lee los datos si es una operación de salida. Es buena elección si los datos van a ser manejados al instante (un modem o teclado)
INTERRUPCION
En lugar de tener la CPU ocupada esperando la disponibilidad del dispositivo, el dispositivo interrumpe a la CPU cuando ha terminado una operación de E/S.
Cuando se produce la interrupción de E/S:
-Determinar que dispositivo la provocó.
-Si la última orden fue una operación de
entrada, recupera los datos del registro
del dispositivo.
-Inicia la siguiente operación para el
dispositivo.
DMA
(Direct Memory Access o DMA). El acceso directo a memoria es una características de las computadoras y microprocesadores modernos que permite que ciertos subsistemas de hardware dentro de la computadora puedan acceder a la memmoria del sistema para la lectura y/o escritura, independientemente de la unidad central de procesamiento. De lo contrario, la CPU tendría que copiar cada porción de dato desde el origen hacia el destino, haciendo que ésta no esté disponible para otras tareas.
Los subsistemas de hardware que utilizan DMA pueden ser: controladores de disco duro, tarjetas gráficas, tarjetas de red, tarjetas de sonido y tarjetas aceleradoras. También es utilizado para la transferencia de datos dentro del chip en procesadores con múltiples núcleos. DMA es esencial en los sistemas integrados.
La CPU recupera la información byte a byte Þno adecuado para grandes volúmenes..
DMA (Direct Memory Access) – Controlador dedispositivo que puede escribir directa-mente en memoria. En lugar de registros de e/s, tiene un registro de dirección.
-La CPU indica al DMA la ubicación de la fuente/destino de la transferencia.
-DMA opera el bus e interrumpe a la CPU cuando se completa la transferencia.
-DMA y CPU compiten por el bus de memoria.
Tecnicas DMA
DMA por robo de ciclo: se basa en usar uno o más ciclo de CPU por cada instrucción que se ejecuta (de ahí el nombre). De esta forma se consigue una alta disponibilidad del bus del sistema para la CPU, aunque, en consecuencia, la transferencia de los datos será considerablemente lenta. Este método es el que se usa habitualmente ya que la interferencia con la CPU es muy baja.
DMA por ráfagas: consiste en enviar el bloque de datos solicitado mediante una ráfaga, ocupando el bus del sistema hasta finalizar la transmisión. Así se consigue la máxima velocidad, sin embargo la CPU no podrá usar el bus durante todo ese tiempo, por lo que permanecería inactiva.
DMA transparente: se trata de usar el bus del sistema cuando se tiene certeza de que la CPU no lo necesita, como por ejemplo en aquellas fases del proceso de ejecución de las instrucciones donde nunca se usa ya que la CPU realiza tareas internas (v. g. fase de decodificación de la instrucción). De esta manera, como su nombre indica, la DMA permanecerá transparente para la CPU y la transferencia se hará sin obstaculizar la relación CPU-bus del sistema. Como desventaja, la velocidad de transferencia es la más baja posible.
DMA Scatter-gather: permite la transferencia de datos a varias áreas de memoria en una transacción DMA simple. Es equivalente al encadenamiento de múltiples peticiones DMA simples. De nuevo, el objetivo es liberar a la CPU de las tareas de copia de datos e interrupciones de entrada/salida múltiples.
PROCESADOR DE E/S
El procesador de entrada/salida (IOP) está conectado al bus. El IOP se utiliza para transferir información entre el almacenamiento principal y grupos específicos de controladores. Algunos IOP están dedicados a tipos específicos de controladores, por ejemplo, los controladores de disco. Otros IOP pueden conectar más de un tipo de controlador, por ejemplo, controladores de cinta o controladores de disco.
Totalmente asociativa• Cualquier dirección de DRAM puede copiarse en
cualquier dirección de caché
• Se necesita leer todo el directorio en
cada acceso
Supera la desventaja de la directa al permitir que cada bloque de
memoria principal pueda cargarse en cualquier lınea de la cache.
La logica de control de la cache interpreta una direccion de memoria
como una etiqueta y un campo de palabra. La etiqueta identifica
unıvocamete un bloque de memoria principal. Para determinar si
un bloque esta en la cache, su logica de control debe examinar simultaneamente todas las etiquetas de lıneas para buscar una coincidencia.
La principal desventaja es que se requiere una circuiteria compleja
para examinar en paralelo las etiquetas de todas las lıneas de
cache.
De correspondencia directa• DRAM dividia en páginas
• Sólo se lee una dirección cada vez
Se hace corresponder cada bloque de memoria principal a solo una
lınea posible de cache. La correspondencia es:
i=j mod m
donde i es el número de líınea de cache, j es el número de bloque
de memoria principal y m es el número de líneas en la cache.
Los w bits menos significativos identifican cada palabra dentro de
un bloque de memoria principal. Los s bits restantes indican uno
de los 2^s bloques de la memoria principal. La logica de la cache
interpreta los s bits como una etiqueta de s-r bits (parte mas
significativa) y un campo de linea de r bits, con el que se identifica
una de las m=2^r lıneas de la cache. Con el uso de una parte de la
dirección como numero de lınea proporciona una asignacion unica
de cada bloque de memoria principal en la cache.
Correspondencia asociativa por conjuntosEs una solucion de compromiso tomando lo bueno de las correspondencias
anteriores, sin presentar sus desventajas. La cache se
divide en v conjuntos cada uno de K líıneas. Las relaciones son las
siguientes:
m=w*K
i=j mod m
donde i es el número de líınea de cache, j es el número de bloque
de memoria principal y m es el número de líneas en la cache.
Un bloque B
j puede proyectarse en cualquiera de las lıneas del
conjunto i. La lógica de control de la cache interpreta una dirección
de memoria con la etiqueta, el conjunto y la palabra. Los d bits del
conjunto especifica uno de entre los v=2^d conjuntos. Los s bits
de los campos de etiqueta y de conjunto especifican uno de los 2^s
bloques de memoria principal.
Concepto de Memoria Virtual: Metodo para conseguir que la suma de los espacios de pila, datos y texto de un programa pueda ser mayor que el tamaño fısico de la memoria disponible para él. (Fotheringham, 1961)
Cada proceso se asigna un area de direcciones contiguo. El SO mantiene en memoria solamente las partes del programa que se estan utilizando y mantiene en disco (intercambiadas) el resto. Sirve para sistemas mono y multiprogramados.
Permite optimizar el uso de la memoria, al mantener en disco partes del proceso poco usadas (rutinas de atencion a errores poco frecuentes, funciones de uso esporadico, datos no usados, . . . ) La memoria virtual se implementa normalmente mediante paginacion.
Para traducir de direccion virtual a fisica existen tres metodos Segmentacion, Paginacion y la combinacion de ambas opciones
PAGINACIONEl término memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas.

Cada proceso tiene su propia tabla de páginas 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 tabla de páginas contiene el número de marco de la página correspondiente en la memoria principal. Puesto que sólo algunas de las páginas de un proceso pueden estar en la memoria principal, se necesita un bit en cada entrada de la tabla para indicar si la página correspondiente está presente (P) en la memoria principal o no. Si el bit indica que la página está en la memoria, la entrada incluye también el número de marco para esa página.
Otro bit de control necesario en la entrada de la tabla de páginas es el bit 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. Si no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente
Como respuesta al fallo de pagina, el SO:
1.- Selecciona una página poco usada del proceso.
2.-Intercambia la página a disco.
3.- Asigna el marco de la página liberada a la página virtual
que se intenta acceder.
Esto supone una forma de reasignacion dinamica por bloques de las direcciones de memoria del proceso
Estructura de la tabla de páginas
Tabla de paginas: Son tablas que contienen (para cada proceso) el numero de marco que corresponde a cada pagina virtual del proceso. El tamaño de pagina viene definido por el hardware y suele ser una potencia de 2 que varia entre 512 y 16M.
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.
Aspectos sobre el diseño
El tiempo de asociacion debe ser reducido. Las soluciones estan basadas completamente en hardware (utilizando registros) son las m´as rapidas, pero esto solo es valido si las tablas son pequeñas.
Cuanto menor sea el tamaño de pagina, menor sera la cantidad de fragmentacion interna. Cuanto menor sea la pagina, mayor sera el numero de paginas que se necesitan por proceso.
Un numero mayor de paginas por proceso significa que las tablas de paginas seran mayores. Esto puede significar que una gran parte de las tablas de paginas de los procesos activos deben estar en la memoria virtual.
La memoria secundaria esta diseñada para transferir eficazmente los bloques de datos de mayor tamaño, de manera que es propicia para tamaños de pagina mayores. Si el tamaño de pagina es muy pequeño, estaran disponibles en la memoria principal un gran numero de paginas para cada proceso.
Despues de un tiempo, todas las paginas de la memoria contendran parte de las referencias mas recientes del proceso. La tasa de fallos de pagina sera menor. Cuando se incrementa el tamaño de la pagina, cada pagina individual contendran posiciones cada vez mas distantes de cualquier referencia reciente. La tasa de fallos sera mayor.
SEGMENTACIÓN

Otra opción para el manejo de la memoria es usar una forma de liberar al programador de la tarea del control de las tablas en expansión y contracción, de la misma forma que la memoria virtual elimina la preocupación por organizar el programa en una serie de proyectos.
Esto se puede lograr dotando a la máquina de varios espacios independientes de direcciones llamados segmentos. Cada segmento tiene una serie lineal de direcciones, desde 0 hasta cierto máximo. La longitud de cada segmento puede variar de 0 hasta un máximo permitido. Los distintos segmentos pueden tener y de hecho tienen por lo general, longitudes distintas. Además, la longitud de un segmento puede variar durante la ejecución. La longitud de un segmento de la pila puede crecer si algo entra a la pila y decrecer si algo sale de ella.
Puesto que cada segmento constituye un espacio independiente de direcciones, los distintos segmentos pueden crecer o reducirse en forma independiente sin afectar a los demás. En la figura 13 podemos ver una lista de comparación entre la paginación y la segmentación.
SEGMENTACION Y PAGINACION
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 S.O.
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. La entrada de la tabla de segmentos contiene la longitud del segmento. Los bits de presencia y modificación no son necesarios, puesto que estos elementos se gestionan en la página. Pueden usarse otros bits de control para comparició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.