Logo Studenta

Formato de Direcciones de Memória

¡Este material tiene más páginas!

Vista previa del material en texto

4.1 Una caché asociativa por conjuntos consta de 64 líneas divididas en conjuntos de 4 líneas. La memoria
principal contiene 4K bloques de 128 palabras cada uno. Muestre el formato de direcciones de memoria
principal.
El caché se divide en 16 conjuntos de 4 líneas cada uno. Por lo tanto, se necesitan 4 bits para
identificar el número establecido. La memoria principal consiste en 4K = 212 bloques. Por lo tanto, el conjunto
más las longitudes de etiqueta deben ser de 12 bits y, por lo tanto, la longitud de la etiqueta es de 8 bits Cada bloque
contiene 128 palabras. Por lo tanto, se necesitan 7 bits para especificar la palabra.
Palabra de juego de etiqueta
Dirección de la memoria principal = 8 4 7
4.2 Una caché asociativa por conjuntos de dos vías tiene líneas de 16 bytes y una capacidad total de 8 KB.
La memoria principal, de 64 MB, es direccionable por bytes. Muestre el formato de las direcciones de
memoria principal.
Hay un total de 8 kbytes / 16 bytes = 512 líneas en el caché. Asi el caché
Consta de 256 conjuntos de 2 líneas cada uno. Por lo tanto se necesitan 8 bits para identificar el conjunto.
número. Para la memoria principal de 64 Mbytes, se necesita una dirección de 26 bits. Memoria principal
Consiste en 64-Mbyte / 16 bytes = 222 bloques. Por lo tanto, el conjunto más largos de etiqueta deben
ser de 22 bits, por lo que la longitud de la etiqueta es de 14 bits y la longitud del campo de palabra es de 4 bits.
TAG SET WORD
Main memory address = 14 8 4
4.3 Para las direcciones hexadecimales de memoria principal: l i l i l í , 666666, BBBBBB; muestre en formato
hexadecimal la siguiente información:
a) Los valores de etiqueta, línea y palabra para una caché con correspondencia directa, utilizando el
formato de la Figura 4.8.
b) Los valores de etiqueta y de palabra para una caché asociativa, utilizando el formato de la Figura
4.4 Indique los siguiente valores:
a) Para la caché directa del ejemplo la Figura 4.8: la longitud de la dirección, el número de unidades
direccionables, el tamaño de bloque, el número de bloques en memoria principal, el número de
líneas en caché y el tamaño de la etiqueta.
b) Para la caché asociativa del ejemplo la Figura 4.10: la longitud de la dirección, el número de unidades
direccionables, el tamaño de bloque, el número de bloques en memoria principal, el número
de líneas en caché y el tamaño de la etiqueta.
c) Para la caché asociativa por conjuntos del ejemplo la Figura 4.12: la longitud de la dirección,
el número de unidades direccionables, el tamaño de bloque, el número de bloques en memoria
principal, el número de líneas en un conjunto, el número de líneas en caché y el tamaño de
la etiqueta.
Longitud de la dirección: 24; número de unidades direccionables: 224; tamaño de bloque: 4; número de
Bloques en memoria principal: 222; número de líneas en caché: 214; tamaño de la etiqueta: 8.
segundo. Longitud de la dirección: 24; número de unidades direccionables: 224; tamaño de bloque: 4; número de
Bloques en memoria principal: 222; número de líneas en caché: 4000 hex; tamaño de la etiqueta: 22.
do. Longitud de la dirección: 24; número de unidades direccionables: 224; tamaño de bloque: 4; número de
Bloques en memoria principal: 222; número de líneas en conjunto: 2; número de conjuntos: 213;
número de líneas en caché: 214; tamaño de la etiqueta: 9.
4.7El Intel 80486 tiene una caché unificada on-chip. Esta caché es de 8 KB y tiene una organización asociativa
por conjuntos de cuatro vías y una longitud de bloque de cuatro palabras de 32 bits. La caché
está estructurada en 128 conjuntos. Hay un único «bit de línea válida» y tres bits, B0, B l, y B2 (los bits
de LRU), por línea. En un fallo de caché, el 80486 lee una línea de 16 bytes de memoria principal en
una ráfaga de lectura de memoria a través del bus. Dibuje un diagrama simplificado de la caché, y muestre
cómo son interpretados los diferentes campos de la dirección.
 Una dirección de 32 bits consiste en un campo de etiqueta de 21 bits, un campo de configuración de 7 bits y un campo de palabra de 4 bits.
Cada conjunto en el caché incluye 3 bits LRU y cuatro líneas. Cada línea consta de 4 32-
palabras de bits, un bit válido y una etiqueta de 21 bits.
4.8 Considere una máquina con una memoria principal de 216 bytes, direccionable por bytes, y un tamaño
de bloque de 8 bytes. Suponga que con esta máquina se utiliza una caché de 32 líneas y correspondencia
directa.
a) ¿Cómo se divide la dirección de memoria de 16 bits entre etiqueta, número de línea y número de
byte?
b) ¿En qué líneas se almacenarían los bytes que se encuentran en las siguientes direcciones?
0001 0001 0001 1011
1100 0011 0011 0100
1101 0000 0001 1101
1010 1010 1010 1010
c) Suponga que se almacena en la caché el byte de dirección 0001 1010 0001 1010. ¿Cuáles son las
direcciones de los bytes que se almacenan junto con él?
d) ¿Cuántos bytes de memoria pueden almacenarse en total en la caché?
e) ¿Por qué se almacenan también las etiquetas en la caché?
8 bits más a la izquierda = etiqueta; 5 bits medios = número de línea; 3 bits más a la derecha = byte
número
segundo. ranura 3; ranura 6; ranura 3; ranura 21
do. Los bytes con las direcciones 0001 1010 0001 1000 a 0001 1010 0001 1111 son
almacenado en el caché
re. 256 bytes
mi. Debido a que dos elementos con dos direcciones de memoria diferentes se pueden almacenar en el
mismo lugar en el caché. La etiqueta se utiliza para distinguir entre ellos.
4.9 Para su caché on-chip, el Intel 486 utiliza un algoritmo de sustitución denominado pseudo LRU.
Asociados con cada uno de los 128 conjuntos de cuatro líneas (etiquetadas LO, L l, L2, L3) hay tres bits,
B0, B1, y B2. El algoritmo de sustitución opera así: cuando se debe sustituir una línea, la caché determinará
primero si el uso más reciente fue de LO y Ll o de L2 y L3. Entonces la caché determinará cuál
de la pareja de bloques fue utilizado menos recientemente y lo marcará para sustituirlo. La figura 4.15
muestra la lógica asociada.
a) Especifique cómo se ponen los bits B0, B 1 y B2, y cómo se utilizan estos en el algoritmo de sustitución
de la Figura 4.15.
b) Muestre cómo el algoritmo del 80486 aproxima a un algoritmo LRU verdadero. Sugerencia: considere
el caso en el que el orden de uso más reciente es LO, L2, L3, Ll.
c) Demuestre que un algoritmo LRU verdadero requeriría seis bits por conjunto.
 Los bits se establecen de acuerdo con las siguientes reglas con cada acceso al conjunto:
1. Si el acceso es a L0 o L1, B0 ← 1.
2. Si el acceso es a L0, B1 ← 1.
3. Si el acceso es a L1, B1 ← 0.
4. Si el acceso es a L2 o L3, B0 ← 0.
5. Si el acceso es a L2, B2 ← 1.
6. Si el acceso es a L3, B2 ← 0.
El algoritmo de reemplazo funciona de la siguiente manera (Figura 4.15): Cuando una línea debe ser
reemplazado, el caché primero determinará si el uso más reciente fue de
L0 y L1 o L2 y L3. Entonces el caché determinará cuál del par de
Los bloques se usaron menos recientemente y se marcan para reemplazo. Cuando el caché es
inicializado o vaciado, los 128 conjuntos de tres bits LRU se ponen a cero.
segundo. El 80486 divide las cuatro líneas en un conjunto en dos pares (L0, L1 y L2, L3). Poco
B0 se utiliza para seleccionar el par que se ha utilizado menos recientemente. Dentro de cada par,
un bit se usa para determinar qué miembro del par se usó menos recientemente.
Sin embargo, la selección final solo se aproxima a LRU. Considerar el caso en
cuyo orden de uso fue: L0, L2, L3, L1. El par usado menos recientemente es (L2,
L3) y el miembro menos recientemente utilizado de ese par es L2, que se selecciona para
reemplazo. Sin embargo, la línea menos utilizada de todas es L0. Dependiendo de
En el historial de acceso, el algoritmo siempre elegirá la entrada utilizada menos recientemente.
o la segunda entrada usada menos recientemente.
do. La forma más sencilla de implementar una LRU verdadera para un conjunto de cuatro líneas es
asociar un contador de dos bits a cada línea. Cuando se produce un acceso, el contador
para ese bloque se establece en 0; Todos los contadorescon valores inferiores al valor original.
para el bloque al que se accede se incrementan en 1. Cuando se produce una falta y el conjunto es
no está lleno, se introduce un nuevo bloque, su contador se establece en 0 y todos los demás contadores
se incrementan en 1. Cuando se produce una falla y el conjunto está lleno, el bloque con
el valor de contador 3 se reemplaza; su contador se establece en 0 y todos los otros contadores son
incrementado en 1. Este enfoque requiere un total de 8 bits.
En general, para un conjunto de N bloques, el enfoque anterior requiere 2N bits. UNA
se puede diseñar un esquema más eficiente que solo requiera N (N – 1) / 2 bits. los
esquema funciona de la siguiente manera. Considere una matriz R con N filas y N columnas,
y tomar la porción triangular superior derecha de la matriz, sin contar la
diagonal. Para N = 4, tenemos el siguiente diseño:
Cuando se hace referencia a la línea I, la fila I de R (I, J) se establece en 1 y la columna I de R (J, I) se establece
a 0. El bloque LRU es aquel para el que la fila es totalmente igual a 0 (para aquellos
bits en la fila; la fila puede estar vacía) y para la cual la columna es completamente 1
(para todos los bits en la columna; la columna puede estar vacía). Como puede verse por N
= 4, se requieren un total de 6 bits.
4.10.
c) Los valores de etiqueta, conjunto y palabra para una caché asociativa por conjuntos de dos vías,
utilizando el formato de la Figura 4.12.
Address 111111 666666 BBBBBB
a. Tag/Line/Word 11/444/1 66/1999/2 BB/2EEE/3
b. Tag /Word 44444/1 199999/2 2EEEEE/3
c. Tag/Set/Word 22/444/1 CC/1999/2 177/EEE/3
4.11 Considere un sistema de memoria que emplea direcciones de 32 bits para direccionar a nivel de bytes,
más una caché que usa un tamaño de línea de 64 bytes.
a) Suponga una caché con correspondencia directa, con un campo de etiqueta en la dirección de veinte
bits. Muestre el formato de direcciones y determine los siguientes parámetros: número de unidades
direccionables, número de bloques en memoria principal, número de líneas en caché y
tamaño de la etiqueta.
b) Suponga una caché asociativa. Muestre el formato de las direcciones y determine los siguientes
parámetros: número de unidades direccionables, número de bloques en memoria principal, número
de líneas en caché y tamaño de la etiqueta.
c) Suponga una caché asociativa por conjuntos de 4 vías con un campo de etiqueta en la dirección
de 9 bits. Muestre el formato de las direcciones y determine los siguientes parámetros: número de
unidades direccionables, número de bloques en memoria principal, número de líneas en un conjunto,
número de conjuntos en caché, número de lineas en caché y tamaño de la etiqueta.
 Formato de dirección: Etiqueta = 20 bits; Línea = 6 bits; Palabra = 6 bits
Número de unidades direccionables = 2s + w = ​​232 bytes; número de bloques en principal
memoria = 2s = 226; número de líneas en caché 2r = 26 = 64; tamaño de la etiqueta = 20 bits.
segundo. Formato de dirección: Etiqueta = 26 bits; Palabra = 6 bits
Número de unidades direccionables = 2s + w = ​​232 bytes; número de bloques en principal
memoria = 2s = 226; número de líneas en caché = indeterminado; tamaño de la etiqueta = 26
pedacitos
do. Formato de dirección: Etiqueta = 9 bits; Set = 17 bits; Palabra = 6 bits
Número de unidades direccionables = 2s + w = ​​232 bytes; Número de bloques en principal
memoria = 2s = 226; Número de líneas en conjunto = k = 4; Número de conjuntos en caché = 2d
= 217; Número de líneas en caché = k × 2d = 219; Tamaño de la etiqueta = 9 bits.
4.12 Considere un computador con las siguientes características: un total de 1 MB de memoria principal;
el tamaño de palabra es de un byte; el tamaño de bloque es de 16 bytes; y un tamaño de caché de
64 KB.
a) Para las direcciones de memoria principal: F0010,01234, y CABBE, indique las correspondientes
etiquetas, dirección de línea de caché y desplazamientos de palabras para una caché con correspondencia
directa.
b) Indique dos direcciones cualesquiera de memoria principal con etiquetas diferentes que se correspondan
con la misma línea para una caché con correspondencia directa.
c) Para las direcciones de memoria principal: F0010 y CABBE, indique los valores de etiqueta y de
desplazamiento para una caché totalmente asociativa.
d) Para las direcciones de memoria principal: F0010 y CABBE, indique los valores de etiqueta, de
conjunto de caché y de desplazamiento para una caché asociativa por conjuntos de dos vías.
 Debido a que el tamaño del bloque es de 16 bytes y el tamaño de la palabra es de 1 byte, esto significa que
Son 16 palabras por bloque. Necesitaremos 4 bits para indicar qué palabra queremos
fuera de un bloque. Cada línea / ranura de caché coincide con un bloque de memoria. Eso significa que cada
ranura de caché contiene 16 bytes. Si el caché es de 64Kbytes entonces 64Kbytes / 16 = 4096
ranuras de caché. Para abordar estas 4096 ranuras de caché, necesitamos 12 bits (212 = 4096).
En consecuencia, dada una dirección de memoria principal de 20 bits (1 MByte):
Los bits 0-3 indican la palabra desplazamiento (4 bits)
Los bits 4-15 indican la ranura de caché (12 bits)
Los bits 16-19 indican la etiqueta (bits restantes)
F0010 = 1111 0000 0000 0001 0000
Desplazamiento de palabra = 0000 = 0
Ranura = 0000 0000 0001 = 001
Etiqueta = 1111 = F
01234 = 0000 0001 0010 0011 0100
Desplazamiento de palabra = 0100 = 4
Ranura = 0001 0010 0011 = 123
Etiqueta = 0000 = 0
CABBE = 1100 1010 1011 1011 1110
Desplazamiento de palabra = 1110 = E
Ranura = 1010 1011 1011 = ABB
Etiqueta = 1100 = C
segundo. Necesitamos elegir cualquier dirección donde la ranura sea la misma, pero la etiqueta (y
opcionalmente, la palabra offset) es diferente. Aquí hay dos ejemplos donde la ranura
es 1111 1111 1111
Dirección 1:
Desplazamiento de palabra = 1111
Ranura = 1111 1111 1111
Etiqueta = 0000
Dirección = 0FFFF
Dirección 2:
Desplazamiento de palabra = 0001
Ranura = 1111 1111 1111
Etiqueta = 0011
Dirección = 3FFF1
do. Con un caché totalmente asociativo, el caché se divide en un TAG y un
Campo WORDOFFSET. Ya no necesitamos identificar qué ranura es un bloque de memoria
podría asignarse a, porque un bloque puede estar en cualquier ranura y buscaremos cada caché
ranura en paralelo. El desplazamiento de palabra debe ser de 4 bits para direccionar cada palabra individual
en el bloque de 16 palabras. Esto deja 16 bits sobrantes para la etiqueta.
F0010
Desplazamiento de palabra = 0h
Etiqueta = F001h
CABBE
Desplazamiento de palabra = Eh
Etiqueta = CABBh
re. Como se calcula en la parte a, tenemos 4096 ranuras de caché. Si implementamos un sistema de dos vías.
establecer caché asociativa, entonces significa que ponemos dos ranuras de caché en un conjunto.
Nuestro caché ahora contiene 4096/2 = 2048 conjuntos, donde cada conjunto tiene dos ranuras. A
Para abordar estos conjuntos de 2048 necesitamos 11 bits (211 = 2048). Una vez que nos dirigimos a un conjunto, nos
buscará simultáneamente ambas ranuras de caché para ver si una tiene una etiqueta que coincida
el objetivo. Nuestra dirección de 20 bits ahora se divide de la siguiente manera:
Los bits 0-3 indican la palabra desplazamiento
Los bits 4-14 indican el conjunto de caché
Los bits 15-20 indican la etiqueta.
F0010 = 1111 0000 0000 0001 0000
Desplazamiento de palabra = 0000 = 0
Conjunto de caché = 000 0000 0001 = 001
Etiqueta = 11110 = 1 1110 = 1E
CABBE = 1100 1010 1011 1011 1110
Desplazamiento de palabra = 1110 = E
Conjunto de caché = 010 1011 1011 = 2BB
Etiqueta = 11001 = 1 1001 = 19
4.13 Describa una técnica sencilla para implementar un algoritmo de sustitución LRU en una caché asociativa
por conjuntos de cuatro vías.
Asocie un contador de 2 bits con cada uno de los cuatro bloques en un conjunto. Inicialmente, arbitrariamente
establezca los cuatro valores a 0, 1, 2 y 3 respectivamente. Cuando se produce un golpe, el contador de
el bloque al que se hace referencia se establece en 0. Los otros contadores en el conjunto con valores
originalmente más bajo que el contador al que se hace referencia se incrementaen 1; el restante
Los contadores no han cambiado. Cuando se produce una falla, el bloque en el conjunto cuyo contador
-21-
el valor es 3 se reemplaza y su contador se establece en 0. Todos los demás contadores del conjunto son
incrementado en 1.
4.14 Considere de nuevo el Ejemplo 4.3. ¿Cómo cambia el resultado si la memoria principal usa una capacidad
de transferencia en bloques que tiene un tiempo de acceso de 30 ns a la primera de las palabras,
y de 5 ns para cada una de las siguientes?
Escribir una línea toma 30 + (7 × 5) = 65 ns, tiempo suficiente para 2.17 palabra simple
operaciones de memoria. Si la línea promedio que se escribe al menos una vez se escribe más
de 2.17 veces, la caché de escritura de nuevo será más eficiente.
4.15 a. onsidere el siguiente código:
for (i = O, i < 20; i + + )
for 0 = O, j < 10; j + + )
a [ i ] = a [ i ] * j
a) Indique un ejemplo de localidad espacial en el código.
b) Indique un ejemplo de localidad temporal en el código.
 Una referencia a la primera instrucción es seguida inmediatamente por una referencia a la
segundo.
segundo. Los diez accesos a una [i] dentro del bucle interno que ocurren dentro de un corto
intervalo de tiempo.
4.16 Generalice las ecuaciones (4.1) y (4.2), del Apéndice 4A, a jerarquías de memoria de TV niveles.
 Definir
Ci = costo promedio por bit, nivel de memoria i
Si = Tamaño del nivel de memoria i
Ti = Tiempo para acceder a una palabra en el nivel de memoria i
Hola = Probabilidad de que una palabra esté en la memoria i y no en una memoria de nivel superior
Bi = Tiempo para transferir un bloque de datos desde el nivel de memoria (i + 1) al nivel de memoria i
Que el caché sea el nivel de memoria 1 memoria principal, nivel de memoria 2; y así sucesivamente, para un total
de N niveles de memoria. Entonces
Cs =
CiSi
i=1
NΣ
Si
i=1
La derivación de Ts es más complicada. Comenzamos con el resultado de teoría de la probabilidad de que:
Expected Value of x = NΣiPr[x = 1]
We can write:
Ts = TiHi
i=1
Debemos darnos cuenta de que si una palabra está en M1 (caché), se lee inmediatamente. Si esta en
M2 pero no M1, luego se transfiere un bloque de datos de M2 ​​a M1 y luego se lee.
Así:
T2 = B1 + T1
Further
T3 = B2 + T2 = B1 + B2 + T1
-22-
Generalizing:
Ti = Bj + T1
j=1
i−1
Σ
So
Ts = (BjHi )
j=1
i−1
Σ
i=2
NΣ
+ T1 Hi
i=1
NΣ
But
Hi
i=1
NΣ
= 1
Finally
Ts = (BjHi )
4.17 Un computador tiene una memoria principal de 32K palabras de 16 bits. Tiene también una caché de
4K palabras dividida en conjuntos de cuatro líneas con 64 palabras por línea. Suponga que la caché está
inicialmente vacía. El procesador capta palabras de las posiciones 0, 1, 2..., 4351, en ese orden.
Entonces repite esta secuencia de captación nueve veces más. La caché es diez veces más rápida que la
memoria principal. Estime la mejora resultante por el uso de la caché. Suponga una política LRU para
la sustitución de bloques.
La memoria principal consta de 512 bloques de 64 palabras. Caché consta de 16 conjuntos; cada juego
consta de 4 ranuras; Cada ranura consta de 64 palabras. Ubicaciones 0 a 4351 en main
la memoria ocupa los bloques del 0 al 67. En la primera secuencia de recuperación, el bloque del 0 al 67
15 se leen en conjuntos de 0 a 15; los bloques del 16 al 31 se leen en conjuntos del 0 al
15; los bloques 32-47 se leen en conjuntos de 0 a 15; los bloques 48-63 se leen en conjuntos 0
hasta el 15; y los bloques 64-67 se leen en conjuntos de 0 a 3. Porque cada conjunto tiene 4
ranuras, no se necesita reemplazo a través del bloque 63. Los últimos 4 grupos de bloques
Implica un reemplazo. En cada pase sucesivo, se requerirán reemplazos en
establece de 0 a 3, pero todos los bloques en los conjuntos de 4 a 15 permanecen intactos.
Por lo tanto, en cada paso sucesivo, 48 bloques no están perturbados, y los 20 restantes
debe leer en.
Deje que T sea el momento de leer 64 palabras del caché. Entonces 10T es el momento de leer 64
Palabras de la memoria principal. Si una palabra no está en el caché, entonces solo puede estar lista
primero transfiriendo la palabra de la memoria principal al caché y luego leyendo el
cache. Por lo tanto, el tiempo para leer un bloque de 64 palabras de la memoria caché si falta es 11T.
Ahora podemos expresar el factor de mejora de la siguiente manera. Sin caché
Tiempo de recuperación = (10 pases) (68 bloques / pase) (10T / bloque) = 6800T
Con caché
Tiempo de recuperación = (68) (11T) primer paso
+ (9) (48) (T) + (9) (20) (11T) otros pases
= 3160T
Mejora = 6800T
3160T = 2.15
4.18 Considere una caché de cuatro líneas con 16 bytes cada una. La memoria principal está dividida en bloques
de 16 bytes. Es decir el bloque 0 tiene bytes con direcciones 0 a 15, y así sucesivamente. Considere
ahora un programa que accede a memoria con la siguiente secuencia de direcciones:
Una vez: de 63 a 70.
Diez veces en un bucle: de 15 a la 32; y 80 a 95.
a) Suponga que la caché es de correspondencia directa. Los bloques de memoria 0,4, etc., se asignan
en la línea 1; los bloques 1, 5, etc., en la línea 2, y así sucesivamente. Calcule la tasa de aciertos.
Memoria cachó 139
4.19.
4.20.
4.21.
4.22.
4.23.
4.24.
b) Suponga ahora que la caché tiene una organización asociativa por conjuntos de 2 vías, on dos conjuntos
de dos líneas cada uno. Los bloques con numeración par se asignan al conjunto 0 y los
impares al conjunto 1. Calcule la tasa de acie1. Calcule la tasa de aciertos para la caché asociatva por conjuntos de dos vías
usando el esquema de sustitución LRU.
 Acceso 63 1 Miss Bloque 3 → Ranura 3
Acceso 64 1 Miss Bloque 4 → Ranura 0
Acceso 65-70 6 Hits
-23-
Acceso 15 1 Miss Bloque 0 → Slot 0 First Loop
Acceso 16 1 Miss Bloque 1 → Ranura 1
Acceso 17-31 15 Hits
Acceso 32 1 Miss Bloque 2 → Ranura 2
Acceso 80 1 Miss Bloque 5 → Ranura 1
Acceso 81-95 15 Hits
Access 15 1 Hit Second Loop
Acceso 16 1 Miss Bloque 1 → Ranura 1
Acceso 17-31 15 hits.
Acceso 32 1 golpe
Acceso 80 1 Miss Bloque 5 → Ranura 1
Acceso 81-95 15 hits.
Acceso 15 1 Hit Tercer Loop
Acceso 16 1 Miss Bloque 1 → Ranura 1
Acceso 17-31 15 hits.
Acceso 32 1 golpe
Acceso 80 1 Miss Bloque 5 → Ranura 1
Acceso 81-95 15 hits.
Access 15 1 Hit Fourth Loop
… El patrón continúa hasta el Décimo Bucle
Para las líneas 63-70 2 Misses 6 Hits
Primer bucle 15-32, 80-95 4 faltas 30 aciertos
Segundo bucle 15-32, 80-95 2 faltas 32 aciertos
Tercer bucle 15-32, 80-95 2 faltas 32 aciertos
Cuarto bucle 15-32, 80-95 2 faltas 32 aciertos
Quinto bucle 15-32, 80-95 2 faltas 32 aciertos
Sixth loop 15-32, 80-95 2 Misses 32 Hits
Seventh loop 15-32, 80-95 2 Misses 32 Hits
Octavo bucle 15-32, 80-95 2 faltas 32 aciertos
Noveno bucle 15-32, 80-95 2 faltas 32 aciertos
Décimo bucle 15-32, 80-95 2 faltas 32 aciertos
Total: 24 Misses 324 Hits
Proporción de aciertos = 324/348 = 0.931
segundo. Acceso 63 1 Miss Bloque 3 → Conjunto 1 Ranura 2
Acceso 64 1 Miss Bloque 4 → Establecer 0 Ranura 0
Acceso 65-70 6 Hits
Acceso 15 1 Miss Bloque 0 → Establecer 0 Ranura 1 Primer bucle
Acceso 16 1 Miss Bloque 1 → Conjunto 1 Ranura 3
Acceso 17-31 15 Hits
Acceso 32 1 Miss Bloque 2 → Establecer 0 Ranura 0
Acceso 80 1 Miss Bloque 5 → Conjunto 1 Ranura 2
Acceso 81-95 15 Hits
Access 15 1 Hit Second Loop
Acceso 16-31 16 Hits
Acceso 32 1 golpe
Acceso 80-95 16 Hits
… Todos los hits para las próximas ocho iteraciones.
Para las líneas 63-70 2 Misses 6 Hits
Primer bucle 15-32, 80-95 4 faltas 30 aciertos
-24-
Segundo bucle 15-32, 80-95 0 Misses 34 Hits
Tercer bucle 15-32, 80-95 0 Misses 34 Hits
Cuarto bucle 15-32, 80-95 0 Misses 34 Hits
Quinto bucle 15-32, 80-95 0 Misses 34 Hits
Sixth loop 15-32, 80-95 0 Misses 34 Hits
Seventh loop 15-32, 80-95 0 Misses 34 Hits
Octavo bucle 15-32, 80-95 0 Misses 34 Hits
Noveno bucle 15-32, 80-95 0 Misses 34 Hits
Décimo bucle 15-32, 80-95 0 Misses 34 Hits
Total = 6 Misses 342 Hits
Proporción de aciertos = 342/348 = 0.983
4.19 a. Considere un sistema de memoria con los siguientes parámetros:
T = 100 ns C = 10-4 dólares/bit c c
T = 1.200 ns m Ct n= 10-5 dólares/bit
a) ¿Cuál es el coste de una memoria principal de 1 MB?
b) ¿Cuál es el coste deuna memoria principal de 1 MB utilizando la tecnología de la caché?
c) Si el tiempo de acceso efectivo es un 10 por ciento mayor que el tiempo de acceso de la caché,
¿cuál es la tasa de aciertos //?
 Costo = Cm × 8 × 106 = 8 × 103 ¢ = $ 80
segundo. Costo = Cc × 8 × 106 = 8 × 104 ¢ = $ 800
do. De la ecuación (4.1): 1.1 × T1 = T1 + (1 - H) T2
(0.1) (100) = (1 - H) (1200)
H = 1190/1200
4.20 
a) Considere una caché L 1 con un tiempo de acceso de 1 ns y una tasa de aciertos H - 0,95. Suponga
que queremos cambiar el diseño de la caché (el tamaño, su oiganización) de manera que incrementemos
//hasta 0,97, pero aumentando el tiempo de acceso a 1,5 ns. ¿Qué condiciones deben
cumplirse para que este cambio suponga una mejora en las prestaciones?
b) Explique por qué el resultado tiene sentido intuitivamente.
Bajo las condiciones iniciales, utilizando la Ecuación (4.1), el tiempo de acceso promedio es
T1 + (1 - H) T2 = 1 + (0.05) T2
Bajo las condiciones cambiadas, el tiempo promedio de acceso es
1.5 + (0.03) T2
Para mejorar el rendimiento, debemos tener
1 + (0.05) T2> 1.5 + (0.03) T2
Resolviendo para T2, la condición es T2> 50.
segundo. A medida que el tiempo de acceso cuando hay una falta de caché se hace más grande, se vuelve
Más importante es aumentar la proporción de aciertos.
4.21 Considere una caché de un solo nivel, con un tiempo de acceso de 2,5 ns, un tamaño de línea de
64 bytes y una tasa de aciertos H - 0,95. La memoria principal usa la capacidad de transferencia en bloques,
con un tiempo de acceso de 50 ns para la primera palabra (4 bytes), y de 5 ns para cada una de las
siguientes.
a) ¿Qué valor tiene el tiempo de acceso cuando hay un fallo de caché? Suponga que la caché espera
hasta que la línea ha sido captada de memoria principal, para entonces ejecutar un acierto de
caché.
b) Suponga que al incrementar el tamaño de línea a 128 bytes se incrementa H hasta 0,97. ¿Reduce
esto el tiempo medio de acceso a memoria?
. Primero, se necesitan 2.5 ns para determinar que se produce una falla de caché. Entonces el
La línea requerida se lee en el caché. Entonces se necesitan 2.5 ns adicionales para
leer la palabra solicitada
Tmiss = 2.5 + 50 + (15) (5) + 2.5 = 130 ns
segundo. El valor Tmiss de la parte (a) es equivalente a la cantidad (T1 + T2) en la ecuación
(4.1). Bajo las condiciones iniciales, usando la Ecuación (4.1), el tiempo de acceso promedio
es
Ts = H × T1 + (1 - H) × (T1 + T2) = (0.95) (2.5) + (0.05) (130) = 8.875 ns
Bajo el esquema revisado, tenemos:
Tmiss = 2.5 + 50 + (31) (5) + 2.5 = 210 ns
y
Ts = H × T1 + (1 - H) × (T1 + T2) = (0.97) (2.5) + (0.03) (210) = 8.725 ns
-25-
4.22 Un computador dispone de una caché, memoria principal, y un disco utilizado para memoria virtual.
Cuando se referencia una palabra que está en la caché se requieren 20 ns para acceder a ella. Si está en
memoria principal pero no en la caché se necesitan 60 ns para cargarla en la caché, y entonces se inicia
de nuevo la referencia. Si la palabra no está en memoria principal se necesitan 12 ms para captarla de
disco, seguidos de 60 ns para copiarla en la caché, comenzando entonces de nuevo la referencia. La tasa
de aciertos de caché es de 0,9 y la de memoria principal de 0,6. ¿Cuál es, en nanosegundos, el tiempo
medio necesario para acceder a una palabra referenciada en este sistema?
 Hay tres casos a considerar:
Ubicación de la palabra referida Probabilidad Tiempo total para el acceso en ns
En caché 0.9 20
No en caché, sino en main
memoria
(0.1) (0.6) = 0.06 60 + 20 = 80
No en caché o memoria principal (0.1) (0.4) = 0.04 12ms + 60 + 20 = 12,000,080
Entonces el tiempo promedio de acceso sería:
Avg = (0.9) (20) + (0.06) (80) + (0.04) (12000080) = 480026 ns
4.23 a. Considere una caché con un tamaño de línea de 64 bytes. Suponga que, en media, un 30 por ciento de
las líneas de caché son modificadas. Una palabra consta de 8 bytes.
a) Suponga una tasa de fallos del 3 por ciento (tasa de aciertos de 0,97). Calcule la cantidad de tráfico
de memoria principal en términos de bytes por instrucción, para políticas de escritura inmediata
y de postescritura. Las lecturas de memoria principal a caché se realizan de línea en línea. Sin
embaído, para la postescritura puede escribirse una sola palabra de caché a memoria principal.
b) Repita el apartado a para una tasa del 5 por ciento.
c) Repita el apartado a para una tasa del 7 por ciento.
d) ¿Qué conclusión puede extraerse de los resultados?
Consideremos la ejecución de 100 instrucciones. Bajo escritura, esto crea
200 referencias de caché (168 referencias de lectura y 32 referencias de escritura). De media,
las referencias de lectura dan como resultado (0.03) × 168 = 5.04 lecturas perdidas. Para cada lectura se pierda,
se debe leer una línea de memoria, generando 5.04 × 8 = 40.32 palabras físicas de
tráfico. Para errores de escritura, una sola palabra se escribe de nuevo, generando 32 palabras de
tráfico. Tráfico total: 72.32 palabras. Para escribir, 100 instrucciones crear 200.
referencias de caché y por lo tanto 6 fallos de caché. Suponiendo que el 30% de las líneas están sucias, en
el promedio de 1.8 de estas fallas requiere una línea de escritura antes de una línea de lectura. Así, total
el tráfico es (6 + 1.8) × 8 = 62.4 palabras. La tasa de tráfico:
Escribir a través de 0.7232 byte / instrucción
Escritura hacia atrás = 0.624 bytes / instrucción
segundo. Para escritura: [(0.05) × 168 × 8] + 32 = 99.2 → 0.992 bytes / instrucción
Para reescritura: (10 + 3) × 8 = 104 → 0.104 bytes / instrucción
do. Para escritura: [(0.07) × 168 × 8] + 32 = 126.08 → 0.12608 bytes / instrucción
Para reescritura: (14 + 4.2) × 8 = 145.6 → 0.1456 bytes / instrucción
re. Una tasa de fallos del 5% es aproximadamente un punto de cruce. A ese ritmo, el tráfico de memoria es
aproximadamente igual para las dos estrategias. Para una tasa de fallos más baja, la reescritura es superior.
Para una mayor tasa de fallos, la escritura es superior.
4.24.
En el microprocesador Motorola 68020, un acceso a caché ocupa dos ciclos de reloj. El acceso a datos
desde memoria principal, a través del bus, hasta el procesador, ocupa tres ciclos de reloj incluso cuando no
se inserten estados de espera; los datos se entregan al procesador a la vez que se entregan a la caché.
a) Calcule la duración efectiva de un ciclo de memoria para una tasa de aciertos de 0,9 y una frecuencia
de reloj de 16,67 MHz.
b) Repita los cálculos suponiendo que se insertan dos estados de espera de un ciclo por cada ciclo de
memoria. ¿Qué conclusión puede extraerse de estos resultados?
Un ciclo de reloj equivale a 60 ns, por lo que un acceso de caché toma 120 ns y una memoria principal
El acceso lleva 180 ns. La duración efectiva de un ciclo de memoria es (0.9 × 120) + (0.1 ×
180) = 126 ns.
segundo. El cálculo es ahora (0.9 × 120) + (0.1 × 300) = 138 ns. Claramente el
El rendimiento se degrada. Sin embargo, tenga en cuenta que aunque el tiempo de acceso a la memoria
aumenta en 120 ns, el tiempo de acceso promedio aumenta en solo 12 ns. Fuente:
[PROT88].
4.25 a. Un procesador tiene un tiempo de ciclo de memoria de 300 ns y una velocidad de procesamiento de instrucciones
de 1 MIPS. De media, cada instrucción necesita un ciclo de memoria del bus para captar la
instrucción y otro para el operando involucrado.
a) Calcule la utilización del bus por parte del procesador.
b) Suponga que el procesador dispone de una caché de instrucciones con una tasa de aciertos asociada
de 0,5. Determine el efecto que tiene sobre la utilización del bus.
Para un procesador 1 MIPS, la instrucción promedio toma 1000 ns para buscar y
ejecutar. En promedio, una instrucción usa dos ciclos de bus para un total de 600 ns, por lo que
la utilización del bus es de 0,6
segundo. Para solo la mitad de las instrucciones se debe usar el bus para obtener instrucciones. Autobús
La utilización es ahora (150 + 300) / 1000 = 0.45. Esto reduce el tiempo de espera para
Otros solicitantes de bus, como dispositivos DMA y otros microprocesadores.
4.26 a. Las prestacionesde un sistema de caché de solo un nivel, para una operación de lectura, puede caracterizarse
mediante la ecuación:
T =T + (1 - H ) T a c v / m
Donde Ta es el tiempo de acceso medio, Tc es el tiempo de acceso a caché, Tm es el tiempo de acceso a
memoria (de memoria a registro del procesador), y //e s la tasa de aciertos. Para simplificar suponemos
que la palabra en cuestión se carga en la caché en paralelo con su caiga en el registro del procesador.
Tiene la misma forma que la Ecuación (4.1).
a) Defina Tb = tiempo de transferencia de una línea entre caché y memoria principal, y W - fracción
de referencias para escritura. Revise la ecuación anterior para que tenga en cuenta tanto las escrituras
como las lecturas, usando una política de escritura inmediata.
b) Defina Wb como la probabilidad de una línea en caché haya sido modificada. Obtenga una ecuación
para Ta> con una política de postescritura.
Ta = Tc + (1 - H) Tb + W (Tm - Tc)
segundo. Ta = Tc + (1 - H) Tb + Wb (1 - H) Tb = Tc + (1 - H) (1 + Wb) Tb
-26-
4.27 Para un sistema con dos niveles de caché, defina T x = tiempo de acceso a la caché del primer nivel;
Tc2 = tiempo de acceso a la caché del segundo nivel; Tm = tiempo de acceso a memoria; //,= tasa de
aciertos de la caché del primer nivel; H2 = tasa aciertos combinada del primer y el segundo nivel.
Obtenga la ecuación de Tq para una operación de lectura.
Ta = [Tc1 + (1 - H1) Tc2] + (1 - H2) Tm
4.28 a. Suponga el siguiente comportamiento frente a un fallo de caché: un ciclo de reloj para enviar una dirección
a la memoria principal y cuatro ciclos de reloj para acceder a una palabra de 32 bits de la memoria
principal y transferirla al procesador y a la caché.
a) Si el tamaño de línea de caché es de una palabra, ¿cuál es la penalización por fallo (es decir, el
tiempo adicional necesario para una lectura cuando se produce un fallo de lectura)?
b) ¿Cuál es la penalización por fallo si el tamaño de línea de caché es de cuatro palabras, y se ejecuta
una transferencia múltiple, no en ráfaga?
c) ¿Cuál es la penalización por fallo si el tamaño de línea de caché es de cuatro palabras y se ejecuta
una transferencia, con un pulso de reloj para transferir cada palabra?
 falta de penalización = 1 + 4 = 5 ciclos de reloj
segundo. falta de penalización = 4 × (1 + 4) = 20 ciclos de reloj
do. falta de penalización = falta de penalización para una palabra + 3 = 8 ciclos de reloj.
4.29 Para el diseño de caché del problema anterior, suponga que el incremento del tamaño de línea de una a
cuatro palabras produce una disminución de la tasa de fallos de lectura del 3,2 por ciento al 1,1 por ciento.
Para ambos casos, transferencia en ráfagas o no, ¿cuál es la penalización por fallo media, promediada
sobre todas las lecturas, para los dos tamaños de línea indicados?
 La penalización por fallos promedio es igual a la penalización por fallos multiplicada por la tasa de fallos. Para una linea
tamaño de una palabra, penalización por falla promedio = 0.032 x 5 = 0.16 ciclos de reloj. Para una linea
tamaño de 4 palabras y la transferencia sin explosiones, pena de falla promedio = 0.011 x 20 = 0.22
ciclos de reloj. Para un tamaño de línea de 4 palabras y la transferencia de ráfaga, penalización promedio por falla
= 0.011 x 8 = 0.132 ciclos de reloj
.

Continuar navegando