Resumen tema 4 [EC] PDF

Title Resumen tema 4 [EC]
Author Javier Cancela
Course Estructura de Computadores
Institution Universidade da Coruña
Pages 7
File Size 329.7 KB
File Type PDF
Total Downloads 64
Total Views 127

Summary

Resumen tema 4...


Description

Tema 4:

MEMORIA PRINCIPAL (RAM)

Estructura y Diseño de Computadores. La interfaz Hardware/Software (4ª edición) David A. Patterson, John L. Hennessy

Estructura de Computadores ~ 2019-20 Javier Cancela Mato

INTRODUCCIÓN En los siguientes temas trataremos las distintas memorias que emplea el ordenador para almacenar la información que genera y necesita. En este tema nos centraremos en la memoria principal del sistema, es decir, la memoria RAM, así como en la jerarquía que existe en la memoria. La memoria es uno de los bloques funcionales básicos para el funcionamiento de un ordenador, junto con la Unidad de Control (procesador) y el sistema de Entrada/Salida. Es en la memoria dónde se almacenan tanto los datos como las instrucciones necesarias para ejecutar los programas. Es por ello que existe un tráfico de información muy intenso entre la memoria y el procesador: el rendimiento del ordenador depende en gran medida de ambos elementos. La estructura de la memoria es un conjunto de posiciones, cada una de ellas contiene un número determinado de bits (como si fuese un array). En todo momento estaremos empleando memorias direccionables a nivel de byte: recibimos una dirección de memoria y al acceder a ella escribiremos o leeremos los datos de byte en byte. Si disponemos de direcciones que ocupan n bits, podremos almacenar 2n bytes en nuestra memoria. Así mismo, las memorias trabajarán con unidades mínimas de información, denominadas palabras, que ocuparán 4 Bytes cada una. Tengamos en cuenta que 4 B equivalen a 32 b (bits). Por ello, si disponemos de direcciones de 32 bits, podremos generar 232 direcciones: la memoria máxima será de 4 GB. En general, con n bits podremos direccionar m = 2n datos diferentes (posiciones de memoria); inversamente, el n.º de bits necesarios para direccionar m datos diferentes es n = log2 (m) . En temas anteriores hemos visto cómo podíamos mejorar la ejecución de instrucciones en el procesador, por lo que ahora nos centraremos en cómo mejorar la memoria del sistema. Así mismo buscamos disponer de memorias cuyos tiempos de lectura/escritura sean rápidos, de modo que podamos mantener el valor del CPI próximo a 1 en todo momento en operaciones donde sea necesario leer/escribir datos en memoria (en concreto las etapas MEM e IF).

JERARQUÍA DE MEMORIA Existe una enorme diferencia entre el rendimiento del procesador y el de la memoria. Dicha diferencia viene modelada por la Ley de Moore, la cual enuncia que “cada 2 años, el n.º de transistores que constituyen un procesador se duplica”, mientras que los tamaños de las memorias sólo crecen un 7% de media su tamaño en el mismo período. Esta diferencia de capacidad provoca que el rendimiento del procesador decaiga debido a las continuas paradas que debe realizar para leer datos desde memoria, y al largo tiempo de espera (relativo) que transcurre para poder obtener dichos datos. La jerarquía de memoria consiste en organizar todo el sistema de memoria para tratar de resolver éste último problema: minimizar los tiempos de acceso a los datos necesarios. Para ello se divide todo el conjunto de memoria en subsistemas, repartidos en distintos dispositivos. De este modo, en los niveles más próximos al procesador existirán memorias de muy rápido acceso pero con una capacidad diminuta, mientras que en los niveles más lejanos las memorias serán de lento acceso pero capacidades enormes. El objetivo principal de la jerarquía de memoria consiste en crear la ilusión de que toda la memoria es tan rápida como los niveles superiores y tan amplia como en los niveles inferiores. A medida que descendemos en la jerarquía de la memoria: la memoria se hace más lenta, dado que debe pasar por más subsistemas hasta poder llegar a la CPU; disminuye el coste por bit, dado que se emplean tecnologías distintas; y aumenta la capacidad de almacenamiento.

1

Cuando se enciende un ordenador, sólo los niveles inferiores son los que contienen la información, puesto que son no volátiles. A medida que el procesador comienza a operar, va emitiendo una serie de direcciones de memoria en donde se encuentran tanto las instrucciones a ejecutar como los datos que necesita para éstas. Cuando dichos datos se han encontrado en los niveles inferiores, son pasados al procesador y se almacenan en algún lugar en los niveles superiores, para obtener un acceso rápido a dichos datos si volviesen a ser referenciados en el futuro. Esta carga de datos en los niveles superiores se produce en bloques de datos próximos entre sí: se carga el dato que se solicita y además, una pequeña cantidad de datos que están adyacentes a dicho dato. Al hacer referencia a un dato, lo primero que se hace es comprobar si dicho dato está en alguno de los niveles superiores de la jerarquía de memoria (aquellas zonas en las la CPU tiene acceso directo): si el dato se encuentra, es proporciona al procesador. Sino, se pasa a buscar dicho dato al nivel inmediatamente inferior en la jerarquía de memoria. Este proceso se repite de forma recursiva, descendiendo en la jerarquía hasta encontrar el dato solicitado. Una vez encontrado el dato, se carga en los niveles superiores hasta llegar a la CPU, de modo que cuando la CPU vuelva a necesitar dicho dato, no tenga que volver al nivel en el que se hallaba originalmente, sino que ya lo dispondrá en algún nivel superior. Este funcionamiento jerárquico funciona óptimamente cuando todos los bloques de datos que hay en los niveles superiores contienen los datos a los que se hace referencia, pues los niveles superiores tienen mayor velocidad de acceso.

PRINCIPIO DE LOCALIDAD Un programa en ejecución suele acceder a una pequeña parte de su espacio de direcciones para poder obtener un bloque de datos. Por ello, las referencias a memoria que genera un programa suelen estar agrupadas en direcciones de memoria muy próximas entre sí.

2

Por ejemplo, en lenguaje C, al declarar un array, todas sus celdas se declaran contiguas en memoria; si declaramos un array cuyo tamaño sea exactamente igual o menor al de un bloque de datos, al cargar dicho bloque en memoria dispondremos de todo el contenido del array en memoria, evitando buscar datos en niveles inferiores. • Localidad espacial: al referenciar un dato concreto, es muy probable que también se referencie a los datos que están muy próximos en memoria a dicho dato. • Localidad temporal: al referenciar un dato, es muy probable que dicho dato vuelva a ser referenciado en un futuro muy próximo.

MEMORIA PRINCIPAL Un acierto consiste en encontrar un dato concreto en un nivel de la jerarquía determinado. También podemos mostrar los aciertos según su tasa de aciertos, que expresa el número de aciertos obtenidos entre el número total de referencias a memoria que se ha realizado. Por otro lado, un fallo se produce cuando no encontramos el dato en el nivel actual de memoria, obligándonos a buscarlo en el nivel inmediatamente inferior. Así mismo, la tasa de fallos expresa el número de fallos obtenidos entre el número total de referencias a memoria, que también se puede calcular como el complementario de la tasa de aciertos. T aciertos =

nº aciertos nº accesos

T fallos =

nº fallos = 1 − T aciertos nº accesos

Análogamente, denominamos tiempo de acierto al tiempo que se necesita para encontrar el dato en alguno de los niveles superiores de la jerarquía. La penalización por fallo consiste en el tiempo adicional que se necesita ante un fallo en los niveles superiores, obligando al SO a buscar dicho dato en los niveles inferiores de la jerarquía e intercambiar alguno de los bloques de datos en los niveles superiores por el dato encontrado. La memoria principal (RAM) es el nivel de la jerarquía ubicado entre la caché y el almacenamiento secundario (disco duro, disco de red, etc), y que también puede emplearse como un interfaz para las operaciones de E/S. En la memoria principal, cada celda física almacena 1 bit de información, de modo que las memorias suelen estar encapsuladas en chips para poder almacenar muchos bits en un sólo dispositivo (la tarjeta RAM). Cada chip contiene una matriz de celdas, donde cada celda individual puede ser accedida conociendo la fila y la columna que ocupa en la matriz. Los chips pueden agruparse en módulos de memoria, de modo que podemos buscar la misma celda concreta en varios chips a la vez, lo cual resulta muy útil cuando el número de chips de los que disponemos es igual al ancho de palabra que almacena la memoria. Es el rendimiento de la memoria principal el que determina el tiempo que tarda en resolverse un fallo en la caché. Algunos parámetros que determinan dicho rendimiento pueden ser la latencia, que indica el tiempo necesario para acceder al primer dato (depende fundamentalmente de la tecnología que se emplee); o el tiempo de transferencia, que es el tiempo necesario para transferir el resto de la información solicitada. Hay varias formas de aumentar el ancho de banda entre la caché y la memoria principal: aumentar el ancho de la memoria, de modo que el bus de datos y la memoria pasan a tener varias palabras de ancho (cargar varios datos a la vez), y emplear un MUX para seleccionar qué palabra obtener en cada momento; emplear bancos de memoria independientes, pero requiere mucho hardware; o emplear memoria entrelazada.

3

MEMORIA ENTRELAZADA Este mecanismo consiste en repartir la información entre varios módulos de memoria, pudiendo acceder paralelamente a ellos y atender varias peticiones de datos de memoria simultáneamente. De este modo, seguiremos teniendo el coste de transmitir cada palabra secuencialmente, pero nos ahorramos el tiempo que ocupa la latencia de acceso a memoria. Esto permite que hagamos escrituras más rápidas, lo cual es importante cuando necesitemos realizar escritura directa en una posición de memoria. Sin embargo, dado que todos los módulos de memoria están funcionando al mismo tiempo, tendremos un consumo de energía mayor. Hay 2 esquemas básicos de entrelazado:

ENTRELAZADO DE ORDEN SUPERIOR (CONSECUTIVO) Las direcciones físicas que podemos referenciar ocupan n bits, por lo que el tamaño total de nuestra memoria será de N = 2n bytes. De esos n bits, emplearemos los m bits más significativos para referenciar al módulo de memoria, disponiendo de un número de módulos M = 2m . Así, los n−m bits menos significativos indicarán la dirección de acceso dentro del módulo (desplazamiento u offset). Cuando accedamos al módulo i, podremos referenciar las direcciones consecutivas dentro del rango [ i⋅⋅2

n− −m

, ( i +1 )⋅⋅2

n− −m

−1 ] .

ENTRELAZADO DE ORDEN INFERIOR (CÍCLICO) Las direcciones físicas que podemos referenciar ocupan n bits, por lo que el tamaño total de nuestra memoria será de N = 2n bytes. De esos n bits, emplearemos los m bits menos significativos para referenciar al módulo de memoria, disponiendo de un número de módulos M = 2m . Dentro del módulo i podremos encontrar las direcciones que la forma k⋅M + i , donde k ∈{0 , 1 ,2 , ... ,2n−m−1 } .

CONFLICTOS DE MEMORIA Con cualquiera de los dos esquemas anteriores podemos obtener M palabras en paralelo por cada acceso a memoria, sin embargo podemos obtener un conflicto cuando varias direcciones requieren acceder al mismo módulo al mismo tiempo, pues no es posible leer dos direcciones dentro del mismo módulo simultáneamente. Este problema es más común en el entrelazado de orden superior, debido a que las direcciones de memoria se almacenan consecutivamente, por lo que el más empleado es el entrelazado de orden inferior.

4

Sin embargo, el entrelazado de orden superior ofrece más ventajas, como su escalabilidad: agregar nuevos módulos resulta más sencillo puesto que no hay que recalcular (ni reasignar) las direcciones ya almacenadas entre los nuevos módulos. Así mimo, si se produjese un fallo en un módulo concreto, sólo sería necesario reparar dicho módulo. En sistemas multiprocesador se suele emplear más este esquema cuando los programas que se ejecutan suelen emplear direcciones de memoria independientes (no coinciden), pero resulta un gran problema cuando se hace uso de la concurrencia.

5...


Similar Free PDFs