Tema 2 Definiciones y conceptos básicos



Descargar 424.76 Kb.
Página3/8
Fecha de conversión12.11.2017
Tamaño424.76 Kb.
1   2   3   4   5   6   7   8

2.3.5 Diseño de bloques de memoria

La ampliación de componentes es una característica fundamental en el diseño y en el caso de las memorias de semiconductor tiene dos objetivos:

a) Incrementar el tamaño de las palabras (número de bits/palabra).

b) Incrementar el número de palabras de la memoria.

Ampliar el tamaño de las palabras de memoria no presenta mayores dificultades. Supóngase que se pretende construir un bloque de memoria RAM de N palabras × km bits (siendo N = 2n), utilizando módulos de memoria de N palabras × m bits (ver Figura 2.20).


RAM

1

2n×m



RAM

2

2n×m


……………….


RAM

k

2n×m



RAM de 2n × km

Figura 2.20: Composición de una memoria RAM de 2n × km bits con k RAM's de 2n × m bits
Para ello basta con utilizar k módulos e interconectarlos tal como se indica en la Figura 2.21. Es decir, las líneas externas del bus de dirección y las líneas de control son comunes a todos los circuitos, mientras que los k buses de datos se yuxtaponen para formar un único bus de datos de km bits.



Figura 2.21: Diseño de una memoria RAM de N x km bits con k RAM's de N x m bits
Incrementar el número de palabras supone aumentar la capacidad de direccionamiento y esto conlleva un incremento del número de bits del bus de dirección. En la Figura 2.22 se ilustra cómo se puede construir un bloque de memoria RAM de 2kN palabras × m bits, con 2k módulos de memoria de N palabras ×m bits.



Figura 2.22: Composición de una memoria RAM de 2kN × m bits con 2k RAM's de N × m bits
En la Figura 2.23 se muestra el diseño de una memoria RAM con capacidad de 2kN × m bits utilizando 2k memorias RAM de N × m bits. Tal como aparece en la Figura 2.23 esto requiere el uso de un decodificador adicional, ya que el número de líneas del bus de dirección tendrá que incrementarse en k. Las n líneas menos significativas del bus de dirección: An-1,..., A0 son compartidas por todos los circuitos de memoria. Las restantes k líneas del bus de dirección: An+k-1, ...., An se conectan a las entradas de un circuito decodificador de k entradas y 2k salidas. Las salidas de este decodificador sirven de líneas de selección a los 2k módulos de N palabras × m bits.



Figura 2.23: Diseño de una memoria RAM de 2kN x m bits con 2k RAM's de N × m bits

Ambas técnicas de ampliación pueden combinarse fácilmente para construir bloques de memoria tan grandes como se quiera a partir de otros más pequeños.





Figura 2.24: RAM de 4096 x 2 bits construida con 8 RAM's de 1024 × 1 bits
La Figura 2.24 representa un bloque de memoria RAM de 4.096 palabras × 2 bits, construido con 8 memorias RAM de 1.024 palabras × 1 bit cada una y un decodificador de 2 a 4 (que permite seleccionar cada fila). Tal como se han conectado los circuitos, las memorias RAM situadas en una misma columna almacenan un bit de cada palabra de memoria.
2.3.6 Conexión de la unidad de memoria al bus del sistema

Una vez examinado el diseño de un bloque de memoria a partir de un determinado tipo de circuito integrado se pasa a considerar, brevemente, la conexión de las líneas de dirección y de datos entre el procesador y la memoria mediante los correspondientes drivers.

El esquema de drivers que se presentó en el apartado 1.4.5 del tema 1 permite realizar la conexión del bloque de memoria con el bus. Esta conexión es diferente según el tipo de líneas del bus de que se trate.

a) Bus de dirección y bus de control.

Ambos buses son unidireccionales, es decir, la transferencia de información se realiza en un sólo sentido, desde la CPU a la memoria.

b) Bus de datos

Es el caso más complicado ya que el bus de datos es bidireccional y es capaz de transferir información en ambos sentidos, desde la CPU a la memoria (operación de escritura) y desde la memoria a la CPU (operación de lectura). Se pueden distinguir dos situaciones, según que el bloque de memoria disponga de entrada y salida de datos separadas (ver Figura 2.25), o las tenga en común sobre una sola línea bidireccional (ver Figura 2.26). En ambas figuras únicamente se representan las conexiones de las líneas de datos.





Figura 2.25: E/S de datos por líneas separadas



Figura 2.26: E/S de datos por una línea común
2.3.7 Estructura y direccionamiento de la unidad de memoria

En el diseño de la unidad de memoria principal se utiliza un bloque básico, que se dispone en una placa de circuito impreso tal como se muestra en la Figura 2.27 y que se repite tantas veces como sea necesario.

Este enfoque presenta ciertas ventajas desde el punto de vista del diseño global de la memoria:

a) Abaratamiento de los costes, ya que se hace un sólo diseño y se construye una única placa.

b) Modularidad y posibilidad de ampliación de la memoria, insertando nuevas placas en el bus.

c) Facilidad de mantenimiento y reparación simplemente cambiando la placa averiada por una nueva.





Figura 2.27: Diseño de la unidad de memoria a partir de un bloque básico
Como ejemplo para fijar las ideas, se considera un procesador que dispone de 20 líneas de dirección: A19, Al8, A17, ..., A0. El conjunto de direcciones tendrá (en notación hexadecimal) todos los valores posibles entre 00000 y FFFFF.

Si se dispone de bloques de memoria de 256K palabras para construir la unidad de memoria asociada a este procesador, cada bloque de memoria puede representarse tal como se indica en la Figura 2.28.





Figura 2.28: Bloque de memoria RAM de 256K
Con este bloque se puede cubrir el mapa de memoria del computador según se muestra en la Figura 2.29.



Figura 2.29: Mapa de memoria
A la vista del mapa de memoria es preciso lograr que, para todos los accesos a palabras con direcciones de memoria comprendidas entre 00000 y 3FFFF (caracterizadas por tener A19 = 0 y A18 = 0), únicamente la placa 0 lea o escriba sus contenidos desde o sobre el bus de datos.

Se necesita incluir en la placa 0 un pequeño circuito lógico de selección de placa, tal como se muestra en la Figura 2.30. Deforma análoga se diseñarían los circuitos de selección de las restantes placas.





Figura 2.30: Circuito de selección de la placa 0
A1 incluir los circuitos de selección en cada placa, éstas ya no serán idénticas. Por este motivo, para la selección de placas se suele utilizar un circuito de comparación tal como se muestra en la Figura 2.31. Este circuito se repite en todas las placas.



Figura 2.31: Circuito de comparación para la selección de placas
La asignación del espacio de direcciones a cada placa se consigue personalizando en cada una de ellas el estado de los conmutadores Cl y C2. Por ejemplo, si C1 C2 = 0 0, la línea de "selección de placa" vale 1 cuando A19A18 = 0 0 y por consiguiente se asignan las direcciones 00000 - 3FFFF (es decir los primeros 256K) a la placa 0. La selección de las restantes placas se realiza de forma similar. Sin embargo esta selección se puede incluir en la placa base. De esta forma todas las placas son idénticas y pueden conectarse en cualquiera de las ranuras de conexión sin tener que realizar la personalización.
Memorias caché

En todos los ciclos de instrucción la CPU accede a memoria al menos una vez para buscar la instrucción y frecuentemente realiza múltiples accesos para leer los operandos o almacenar los resultados. La velocidad con que la CPU puede ejecutar instrucciones está claramente limitada por el tiempo de ciclo de memoria. Esta limitación plantea un problema importante, debido a que las velocidades de funcionamiento de la CPU y de la memoria principal son diferentes. Se conoce como tiempo de ciclo del procesador el tiempo que la CPU necesita para realizar una de sus operaciones básicas, tales como leer de memoria o escribir en memoria, ejecutar el código de operación de una instrucción, comprobar si existen interrupciones, etc.

Surge nuevamente la necesidad de establecer un compromiso entre velocidad, coste y capacidad. Idealmente, se debería diseñar la memoria principal utilizando la misma tecnología que la empleada en los registros internos de la CPU, con lo que se conseguirían tiempos de ciclo de memoria y del procesador comparables. Esta estrategia, aunque conceptualmente simple y directa, es demasiado costosa. La solución estriba en colocar una memoria pequeña y rápida entre la CPU y la memoria principal (Mp): esta memoria se conoce como memoria caché (Mca).

Este concepto se muestra en la Figura 2.32. Hay una memoria principal relativamente grande y lenta, conjuntamente con una memoria caché pequeña y rápida. Con esta estructura se utiliza, de forma inteligente, el "principio de localidad" ya mencionado al hablar de jerarquía de memorias.





Figura 2.32: Memoria caché y memoria principal
La memoria caché almacena una copia de ciertas partes de la memoria principal. Cuando la CPU intenta leer una palabra de memoria en primer lugar comprueba si la palabra deseada está ya en la memoria caché. Si está, se lee la palabra desde la memoria caché. Si no está, se transfiere a la memoria caché un bloque de la memoria principal, que contiene un determinado número de palabras. Debido al fenómeno de la localidad de las referencias a memoria, es probable que cuando se transfiere un bloque de datos a la memoria caché, las futuras llamadas a memoria se hagan a otras palabras contenidas en el bloque transferido. Para el estudio de las memorias cachés es conveniente precisar los conceptos de bloque, acierto y fallo (ver Figura 2.33):

1) Bloque. Es la cantidad mínima de información que puede estar presente o no en Mp y Mca.

2) Acierto. Cuando la CPU necesita una palabra de la Mp y la encuentra en la Mca, se dice que se produce un acierto

3) Fallo. Si la palabra solicitada por la CPU a la MP no está en la Mca se contabiliza como un fallo.





Figura 2.33: Conceptos de bloque, acierto y fallo de una memoria caché
En la Figura 2.34 se muestra la estructura de un sistema Mp-Mca. La memoria principal consta de N = 2n palabras y cada palabra se puede referenciar mediante una dirección única de n bits.



Figura 2.34: Estructura memoria principal memoria caché
Con el fin de efectuar la transformación entre la memoria principal y la memoria caché, se considera que la memoria principal está constituida por una serie de bloques de longitud fija, de k palabras/bloque. Esto es, hay M = 2n/k bloques en la Mp. La memoria caché contiene C bloques de k palabras cada uno y el número de bloques de la memoria caché es considerablemente menor que el número de bloques que hay en la memoria principal (C << M). Esto implica que la memoria caché tiene que disponer de un directorio que consta de etiquetas que permiten identificar qué bloque de la Mp se encuentra en cada momento en la Mca. Los bits de estado sirven para indicar, entre otras cosas, si la información que contiene un bloque de caché es válida o no. Una vez vista la estructura de un sistema con memoria caché se puede analizar como se realiza en general la operación de lectura en una M,.a (ver Figura 2.35).



Figura 2.35: Acceso a la memoria caché en una operación de lectura
La CPU genera una dirección para llevar a cabo un acceso a una determinada palabra de la Mp. Esta dirección desde el punto de vista de la Mca consta de las dos partes. Una parte es el campo identificador de bloque que especifica el bloque donde se encuentra la palabra pedida y la otra indica el campo deposición de la palabra dentro del bloque. Por ejemplo si los bloques contienen 8 palabras, el campo de posición tendrá 3 bits que son los necesarios para seleccionar una palabra entre las 8 que tiene un bloque. A1 realizar la búsqueda pueden ocurrir dos situaciones diferentes:
1) Que el identificador del bloque buscado coincida con alguna de las etiquetas de los bloques almacenados en el directorio de la Mca. En ese caso se dice que se ha producido un acierto y con los bits correspondientes al campo de posición se selecciona la palabra pedida dentro del bloque para entregársela a la CPU.
2) Que el identificador del bloque buscado no coincida con alguna de las etiquetas de los bloques almacenados en el directorio de la Mca. Esto quiere decir que la palabra pedida no se encuentra en ese momento en la Mca y en consecuencia se ha producido un fallo de acceso. En este caso para realizar la operación de lectura solicitada por el procesador es necesario acceder a la Mp. Además debido al principio de localidad antes de finalizar la operación de lectura se deberá actualizar la Mca para que la próxima vez que se haga referencia a esa dirección o a otra próxima a ella se encuentren ya en la Mca. Generalmente la actualización lleva consigo la sustitución de uno de los bloques de la Mca así como la modificación de la etiqueta correspondiente.
La Figura 2.36 muestra el diagrama de flujo de la operación de lectura en Mca que se acaba de describir.



Figura 2.36: Diagrama de flujo de la operación de lectura de una memoria caché

Aunque hay gran diversidad de memorias caché, existen unos ciertos criterios básicos de diseño que sirven para clasificar y diferenciar las distintas arquitecturas de este tipo de memorias. La Tabla 2.9 da una relación de estos criterios.



Capacidad

1 K, 4K, 16K, 32K, 64K,128K, 256K,

Organización de la memoria caché

Directa

Totalmente asociativa

Asociativa por conjuntos


Mecanismos de búsqueda

Por demanda

Con anticipación

Selectiva


Algoritmo de reemplazamiento

Utilizado menos recientemente (LRU)

Más antigua (FIFO)

Utilizado menos frecuentemente (LFU)

Aleatorio



Estrategia de escritura

Escritura inmediata

Post-escritura

Escritura única


Tamaño del bloque

4, 8, 16, 32, palabras

Número de cachés

cachés de un nivel, caches de dos niveles,

Tabla 2.9: Elementos de diseño de una memoria caché
2.4.1 Rendimiento de una memoria caché

El rendimiento de una memoria caché se mide frecuentemente en términos de una cantidad llamada tasa de acierto (h).




Es decir h, que matemáticamente es una probabilidad, representa la razón entre el número de aciertos y el número total de referencias a memoria de la CPU (aciertos + fallos). Esta relación se suele medir experimentalmente ejecutando una serie de programas representativos en el computador y calculando el número de aciertos y de fallos durante un intervalo de tiempo dado.

En sistemas bien diseñados se suelen conseguir tasas de aciertos de 0,9 e incluso superiores. Este valor tan elevado verifica la validez del principio de localidad. La tasa de fallos es lógicamente 1-h. El tiempo de acceso medio ta al sistema conjunto de memoria (Mp + Mca) viene dado por la siguiente expresión:

ta = h·tca + (1   h)tp (2.1)

tca = tiempo de acceso medio a la Mca tp = tiempo de acceso medio a la Mp

para la determinación de ta en (2.1) se ha supuesto que el primer acceso debe hacerse a la memoria caché antes de realizar un acceso a la memoria principal. Los accesos hechos a Mp incrementan el tiempo de acceso en (1   h)tp.
En un sistema con memoria caché, la razón suele estar entre 0,1 y 0,5. Este parámetro τ define la relación que existe entre el tiempo de acceso medio a la Mca y el tiempo de acceso medio a la Mp. Valores típicos para tp y ta pueden ser 100 ns y 20 ns respectivamente, lo que da un valor para τ de 0,2. Se puede definir ahora un cierto índice de mejora λ que se consigue al introducir en la jerarquía de memorias una memoria caché.

El parámetro λ, define la relación que existe entre tp (tiempo de acceso medio a la Mp) y ta (tiempo de acceso medio al sistema conjunto de Mp + Mca). Operando en la ecuación (2.1) y teniendo en cuenta la definición de τ se obtiene:



(2.2)

La Figura 2.37 muestra una gráfica de λ, en función de la tasa de acierto h. Como se podía esperar, cuando h = 0 (todos los accesos se hacen a la Mp) el valor de λ es 1 y cuando h = 1 (todos los accesos se hacen a la Mca) el valor de λ, es 1/τ . La conclusión más importante que arroja la Figura 2.37 es que el índice de mejora es una función que es muy sensible al valor de la tasa de acierto h.

Solamente cuando h se aproxima a una tasa de acierto del 90 % es cuando el efecto de la memoria caché se hace realmente significativo. Este resultado es consistente con lo que dicta el sentido común. Si h cae por debajo del 90 %, los accesos a la Mp consumen una cantidad desproporcionada de tiempo y los accesos rápidos a la Mca tienen poco efecto sobre el rendimiento del sistema.



Figura 2.37: Índice de mejora λ de la Mca en función de la tasa de acierto h
2.4.2 Capacidad de la memoria caché

El tamaño de la memoria caché (número de palabras) plantea un cierto compromiso. Por un lado, debería ser lo suficientemente pequeña como para que el coste medio por bit de información almacenado en la memoria interna del computador (memoria caché + memoria principal) estuviese próximo al de la memoria principal. Por otro, tendría que ser lo bastante grande como para que el tiempo de acceso medio total fuese lo más próximo posible al de la memoria caché. No obstante, hay algunas otras motivaciones para tratar de minimizar el tamaño de una memoria caché. Cuanto más grande sea la memoria caché más compleja será la lógica asociada con su direccionamiento. El resultado neto es que las memorias caché de gran capacidad tienden a ser más lentas que las más pequeñas, incluso empleando en ambas la misma tecnología de fabricación de circuitos integrados. También su capacidad tiende a estar limitada por el espacio físico que se le asigna, en muchos casos dentro del mismo circuito integrado que el procesador.

Una serie de estudios empíricos sugieren que el tamaño óptimo de una memoria caché está situado entre 1 K y 512K. Debido a que el rendimiento de la memoria caché es muy sensible al tipo de trabajo desarrollado, resulta imposible dar un valor exacto para el tamaño óptimo de una memoria caché.
2.4.3 Organización de la memoria caché

Existen diversas formas de como se puede organizar internamente una caché para almacenar su información. En todos los casos, la CPU referencia a la caché con la dirección de memoria principal del dato que necesita. Por este motivo cualquier organización de memoria caché debe utilizar esta dirección para encontrar el dato si lo tiene almacenado o indicarle al procesador cuando ha ocurrido un fallo. El problema de hacer corresponder la información mantenida en la memoria principal en su equivalente en la caché debe de implementarse totalmente en hardware si se desea conseguir un rendimiento óptimo en la operación del sistema. Básicamente la organización de la memoria caché consiste en establecer la función de correspondencia, que asigna a los bloques de la memoria principal posiciones definidas en la memoria caché. Para el cálculo de dicha función de correspondencia se emplean tres técnicas básicas:

• Directa

• Totalmente asociativa

Asociativa por conjuntos

A continuación se examinan cada una de ellas utilizando el mismo ejemplo en las tres. El ejemplo incluye los siguientes elementos:

a) La memoria caché puede almacenar 512 = 29 bytes.

b) Los datos se transfieren entre la memoria principal y la memoria caché en bloques de k = 8 bytes. Esto quiere decir que la memoria caché está organizada en C = 64 bloques de k = 8 bytes cada uno.

c) La memoria principal consta de N = 32K bytes y cada una de ellos requiere n = 15 bits para especificar su dirección (215 = 32K).

A efectos de la transformación se puede considerar que la memoria principal consta de M = 4K bloques con k = 8 bytes/bloque. Como existen menos bloques en la memoria caché que bloques en la memoria principal, se necesita un algoritmo para calcular que bloque de la memoria principal ocupa un bloque dado de la memoria caché.



Compartir con tus amigos:
1   2   3   4   5   6   7   8


La base de datos está protegida por derechos de autor ©composi.info 2017
enviar mensaje

    Página principal