Está en la página 1de 6

19 de abril de 2021 Arquitectura de Computadores (Grado II) Página 1 de 6

1 (3,5 puntos) Sea un computador cuya CPU de 32 bits ejecuta instrucciones a un ritmo de 1.000 MIPS y
que presenta las siguientes caracterı́sticas relacionadas con la Entrada/Salida (E/S):
• SRI con duración de 5 ns
• protocolo de concesión y devolución de buses emplea 2 ns en total
• tiempo de acceso a memoria es de 1 ns
a) Este computador tiene conectado un módulo de E/S que controla un dispositivo de almacenamiento
USB. Se conocen las siguientes caracterı́sticas de este dispositivo y su controlador:
• velocidad de transferencia 48 MB/s
• 2 registros de datos de 32 bits
• RTI ejecuta 120 instrucciones
• rutina de inicio ejecuta 100 instrucciones
• rutina de finalización ejecuta 50 instrucciones
• tiempo de acceso es de 2.000 µs
• bloques de 1.024 bytes
a.1) Calcule el tiempo que dedica la CPU a una operación de E/S de este dispositivo
a.2) Calcule el porcentaje de tiempo de CPU consumido por una operación de E/S
b) En el mismo computador se quiere utilizar un disco SSD del que se leerán datos para ser enviados al
dispositivo USB del enunciado. Este disco SSD tiene las siguientes caracterı́sticas:


Velocidad de transferencia 400 MB/s
trabaja por DMA
8 registros de datos de 32 bits
RTI ejecuta 80 instrucciones
SI
AT
• rutina de inicio ejecuta 120 instrucciones
• tiempo de acceso es de 100 µs
• bloques de 4.096 bytes
b.1) Determine si este sistema permite que ambos periféricos se encuentren transfiriendo información
simultáneamente.
b.2) Justifique a cuál de estos dispositivos se debe asignar mayor prioridad en la atención a las inte-
D

rrupciones.
b.3) Indique qué sucederı́a en caso de que se asignara en orden inverso la prioridad de estos dos dispo-
sitivos.
c) En un momento determinado, se programa la copia de tres bloques del disco SSD en el dispositivo USB
operando ambos de forma simultánea.
c.1) Calcule la duración total de dicha copia de datos del disco SSD en el dispositivo USB.
c.2) Calcule cuánto tiempo le queda libre a la CPU para realizar otras tareas durante la copia del apartado
anterior.

SOLUCIÓN
a) El tiempo de ejecución de una instrucción en este computador es 1I
1000·106 I/s
= 10−9 s = 1 ns.
a.1) El tiempo que dedica la CPU a una operación de E/S de este dispositivo es el correspondiente a la rutina
de inicio, al tratamiento de las interrupciones y a la rutina de finalización:
TcpuU SB = Tini + 1.024B
2×4 B (Tsri + Trti ) + Tf in =
= 100 ns + 128 × (5 ns + 120 ns) + 50 ns = 16.150 ns
a.2) Para determinar el porcentaje de tiempo de CPU que se consume durante una operación de E/S debemos
calcular su duración:
19 de abril de 2021 Arquitectura de Computadores (Grado II) Página 2 de 6

1.024B
TopU SB = Tini + Tacc + 48·106 B/s + (Tsri + Trti ) + Tf in =

= 100 ns + 2.000 · 103 ns + 21, 33 · 10−6 s + (5 ns + 120 ns) + 50 ns = 2.021.608, 33 ns


TcpuU SB 16.150 ns
%TcpuU SB = TopU SB × 100 = 2.021.608,33 ns × 100 = 0, 8 %
b) Las operaciones de E/S de el disco SSD se realizan por DMA. Dado que su módulo de E/S dispone de un
buffer de 8 registros de datos y que el enunciado no indica nada en contra, supondremos que opera mediante
ráfagas de DMA. La duración de cada ráfaga es Tdma = 2 ns + 8 · 1 ns = 10 ns.
b.1) Ambos periféricos podrán operar simultáneamente si consumen conjuntamente menos capacidad de pro-
cesamiento de la que dispone el procesador, 1.000 MIPS.
6
CP rocU SB = F recIntU SB × (Tsri + Trti ) = 48·10 B/s 5 ns
2×4B ( 1 ns/I + 120I) = 6.000.000 s
−1 × 125 I =

= 750.000.000 I/s = 750 M IP S


6
CP rocSSD = F recDmaSSD × Tdma = 400·10
8×4B
B/s
× 2 ns+8·1 ns
1 ns/I = 12.500.000 s−1 × 10 I =
= 125.000.000 I/s = 125 M IP S
En conjunto consumen 750 + 125 = 875 MIPS, que es menos de la capacidad de procesamiento del compu-
tador, por lo que sı́ pueden transmitir simultáneamente.
2·4B
b.2) El USB solicita 6.000.000 de interrupciones por segundo y el procesador dispone de 48·10 6 B/s = 166, 7 ns

para procesar cada una de ellas antes de que se pierdan datos. Por su parte, como el disco SSD opera por
DMA, sólo solicita una interrupción para señalar el fin de la transferencia y, dado que ésta ya ha finalizado, si
ha sido o no correcta no depende del momento en que se ejecute el tratamiento de la interrupción. Por tanto,
SI
el dispositivo USB debe tener más prioridad que el disco SSD.
b.3) El tiempo que transcurre entre dos solicitudes de interrupción del USB consecutivas es 166,7 ns y el
tiempo que necesita el procesador para su tratamiento son 125 ns: 5 ns correspondientes a la secuencia de
reconocimiento de interrupción y 100 ns correspondientes a la ejecución de la RTI. Si se asignara más prioridad
al disco SSD que al USB y coincidieran en el tiempo sus peticiones de interrupción, el procesador atenderı́a la
AT
del SSD en primer lugar, consumiendo 5 ns + 80 ns = 85 ns y retrasando el tratamiento de la del USB, que
concluirı́a 85 + 125 = 210 ns después de su solicitud, es decir, 210 - 166,7 = 43,3 ns después de la llegada de
la siguiente solicitud de interrupción, con lo que se perderı́an los datos de una de ellas y la operación de E/S
serı́a fallida.
c) La copia de un bloque del disco SSD al dispositivo USB conlleva una operación de lectura (4.096 bytes) y
cuatro de escritura (1.024 bytes cada una). Estas operaciones se deben realizar secuencialmente. Sin embargo,
la lectura de los siguientes bloques de 4.096 bytes puede producirse al mismo tiempo que las escrituras siendo la
duración relativa de ambas operaciones la que determine el orden en el que se realicen y, por tanto, la duración
D

total de la copia de los tres bloques.


c.1) La duración de una operación del dispositivo USB, TopU SB = 2.021.608, 33 ns, se calculó en el apartado
a.2).
4.096B
TopSSD = Tini + Tacc + 400·106 B/s + Tdma + (Tsri + Trti ) =
3
= 120 ns + 100 · 10 ns + 10.240 ns + 10 ns + (5 ns + 80 ns) = 110.455 ns
Según estos cálculos, la lectura del segundo y tercer bloque del disco SSD se produce durante la escritura
del primer bloque de 1.024 bytes en el dispositivo USB, con lo que el resto de las escrituras se producirá
secuencialmente y sin retardos entre ellas.
TopCOP IA = TopSSD + 12 × TopU SB = 110.455 ns + 12 × 2.021.608, 33 ns = 24.369.755 ns
c.2) Tal como se determinó en el apartado a.1), cada operación de escritura en el dispositivo USB ocupa al
procesador durante TcpuU SB = 16.150 ns. El tiempo de ocupación de la CPU de cada operación del disco SSD
es el siguiente:
TcpuSSD = Tini + 4.096B
8×4 B Tdma + (Tsri + Trti ) =
= 120 ns + 128 × 10ns + (5 ns + 80 ns) = 1.485 ns
El tiempo de CPU consumido por toda la operación de copia es:
TcpuCOP IA = 3 × TcpuSSD + 12 × TcpuU SB = 3 × 1.485 ns + 12 × 16.150 ns = 198.255 ns
Por tanto, el tiempo que queda libre para otras tareas es:
TlibreCOP IA = TopCOP IA − TcpuCOP IA = 24.369.755 ns − 198.255 ns = 24.171.500 ns
19 de abril de 2021 Arquitectura de Computadores (Grado II) Página 3 de 6

2 (4,5 puntos) Sea un computador con tamaño de palabra de 32 bits, direcciones fı́sicas de 32 bits y cachés
separadas para instrucciones y datos, cuyas caracterı́sticas son las siguientes:
• Capacidad de cada caché 16KB, lı́neas de 32 bytes y tiempo de acceso 2ns.
• Polı́tica de ubicación asociativa por conjuntos de 2 lı́neas y polı́tica de lectura out of order fetch
• Polı́tica de reemplazo LRU ( Least Recently Used).
• La polı́tica de escritura (para la caché de datos) es aplazada con actualización (CBWA). En los fallos de
escritura, primero se escribe en memoria principal y posteriormente se lleva el bloque actualizado a la
caché.
En este computador se ejecuta un programa del que se quiere analizar un fragmento de código, y del que se
muestra a continuación el código generado por el compilador, en ensamblador, ası́ como el correspondiente en
lenguaje de alto nivel. Se sabe que el tamaño de cada instrucción, ası́ como el de los elementos de las estructuras
de datos (matrices y los vectores) es de una palabra. El código está en Mp a partir de la dirección 0x00021000 y
la dirección de comienzo de la matriz A es 0x00082000. Las matrices B y C, y los vectores D y E, en este orden,
están almacenados a continuación de A.
or r1, r0, 0 ; i=0 for (i=0; i<32; i++)
Bi: or r2, r0, 0 ; j=0 for (j=0; j<32; j++) {
or r14, r23, 0 B[i][j] = A[i][j] + D[j];
or r15, r24, 0 C[i][j] = A[i][j] - E[j];
Bj: ld r16, r20, r0 ; r16 = A(i,j) }
ld r17, r14, r0 ; r17 = D(j)
ld r18, r15, r0 ; r18 = E(j)
add r19, r16, r17
st r19, r21, r0
sub r19, r16, r18
st r19, r22, r0
add r2, r2, 1
add r20,r20, 4
SI
; B(i,j) = A(i,j)+D(j)

; C(i,j) = A(i,j)-E(j)
; j++
AT
add r21,r21, 4
add r22,r22, 4
add r14,r14, 4
add r15,r15, 4
cmp r13, r2, 32 ; saltar si j <32
bb1 lt, r13, Bj
add r1, r1, 1 ; i++
cmp r13, r1, 32
D

bb1 lt, r13, Bi ; saltar si i <32


Al comenzar la ejecución del fragmento de código, los registros r20, r21, r22, r23 y r24 contienen las
direcciones de comienzo de las estructuras de datos. Las matrices se almacenan por filas, i.e. los elementos de
la segunda fila a continuación de la primera y ası́ sucesivamente.
a) Especifique cómo interpretan las memorias caché las direcciones fı́sicas: significado y número de bits
utilizado para cada campo, y calcule cuántos bloques ocupan en Mp tanto el código como las estructuras de
datos a las que accede.
b) Indique razonadamente en qué conjuntos de las cachés se ubicarán tanto el código como las estructuras
de datos. Calcule el número de accesos y de fallos que se producirán en cada una de las cachés ası́ como sus
respectivas tasas de acierto. Para ello suponga que ambas están inicialmente invalidadas.
c) Indique qué tipos de proximidad de referencias se da en los accesos a datos.
d) Calcule el tiempo medio de acceso a instrucciones y a datos. Para ello suponga que el tiempo empleado
para leer o escribir una palabra en Mp es 50ns y el tiempo en transferir un bloque 60ns.
Considere ahora que el procesador dispone de memoria virtual paginada, con páginas de 8KB, 3 niveles
de tablas de páginas, cada tabla de páginas ocupa una página y cada entrada una palabra. Para la traducción
dispone además de una TLB unificada cuyo tiempo de acceso es 1ns.
e) Especifique el formato de las direcciones virtuales e indique cuál es el tamaño del espacio de direcciones
virtuales de este computador.
f ) Calcule cuantas páginas tienen asignadas tanto el código como las estructuras de datos utilizadas e
indique cuántas entradas deberá tener como mı́nimo la TLB para que solo se produzcan fallos de primera
referencia.
19 de abril de 2021 Arquitectura de Computadores (Grado II) Página 4 de 6

g) Teniendo en cuenta su respuesta a la pregunta anterior y suponiendo que no se producen fallos de


página, calcule:
g.1) La tasa de aciertos de la TLB suponiendo que inicialmente está invalidada.
g.2) Los tiempos máximo y mı́nimo de acceso al sistema de memoria de este computador. Para ello
compruebe si se puede solapar el acceso a la TLB y a la memoria cache.

SOLUCIÓN
a) Cada caché es de 214 B y cada lı́nea de 25 B, por lo que cada una se compone de 214 /25 = 29 = 512 lı́neas,
y cada lı́nea tiene capacidad para 8 palabras (25 B/lı́nea / 22 B/palabra).
Como la polı́tica de ubicación de ambas es asociativa por conjuntos de 2 lı́neas, tendrán 29 /2 = 256
conjuntos. Ası́ que las cachés interpretan las direcciones fı́sicas (32 bits) de la forma siguiente:

etiqueta conjunto byte


19 bits 8 bits 5 bits

Código: Su dirección está alineada a bloque (los 5 bits menos significativos son cero). Como consta de 22
instrucciones, cada una de una palabra, y en cada bloque caben 8 palabras, ocupa 3 bloques de Mp.
Matrices: La dirección de A está también alineada a bloque. Como tiene 1.024 elementos (32 × 32), cada uno
SI
de una palabra, y en cada bloque caben 8 palabras, ocupa 128 bloques completos. Lo mismo ocurre para
las otras dos matrices.
Vectores: La dirección de D está también alineada a bloque, ya que las matrices ocupan un número exacto de
bloques. Como tiene 32 elementos, cada uno de una palabra, y en cada bloque caben 8 palabras, ocupa
4 bloques completos. Lo mismo ocurre para el vector E
AT
b) Las direcciones de Mp a partir de las que están ubicados el código y la matriz A son interpretadas por sus
respectivas cachés de la forma siguiente:

Código:

0x00021000 0 ... 0010 000 1 0000 000 0 0000


D

etiqueta conjunto byte

Por lo tanto, el código se ubicará a partir del conjunto 27 = 128 de la McaI. Ocupando una lı́nea de los
conjuntos 128, 129 y 130.
Matriz A:

0x00082000 0 ... 1000 001 0 0000 000 0 0000


etiqueta conjunto byte

La matriz A se ubicará ocupando una lı́nea por conjunto a partir del conjunto 0 hasta el conjunto 127
de la McaD. Como B está almacenado en Mp a continuación de A, se ubicará ocupando una lı́nea de los
conjuntos 128 a 255. La matriz C se ubicará en los siguientes 128 conjuntos. Es decir, se ubicará ocupando
una lı́nea de los conjuntos 0 a 127 de la McaD.
A los vectores D y E, almacenados en Mp a continuación de C les corresponderı́a ubicarse de nuevo en
lı́neas de los conjuntos 128 a 131 y 132 a 135 respectivamente.

Número de fallos y Hr de cada caché:


McaI: en la cache de instrucciones únicamente se producen los 3 fallos de primera referencia al acceder a
los 3 bloques que contienen el código. Estos 3 fallos serán de lectura al hacer el fetch de las primeras
instrucciones de cada bloque.
19 de abril de 2021 Arquitectura de Computadores (Grado II) Página 5 de 6

Accesos = 1 + (3 + 15 × 32 + 3) × 32 = 15.553
15.553 − 3
HrM caI = = 0, 9998
15.553

McaD: en la cache de datos también se producen únicamente fallos de primera referencia. Aunque los bloques de
la matriz A comparten conjuntos con los correspondientes de la matriz C, al ser asociativa por conjuntos de
dos lı́neas no se producirán conflictos. Lo mismo ocurre con los 8 primeros bloques de la B que comparten
conjuntos con los bloques de los vectores D y E.
De este modo, tendremos 128 fallos de lectura correspondientes a los bloques de la matriz A, 4 por los
bloques del vector D y otros 4 por los del vector E.
Los fallos de escritura se deberán a los bloques de las matrices B y C de 128 bloques cada una.

Accesos totales = 5 × 32 × 32 = 5.120


F allos de lectura = 128 + 4 + 4 = 136
F allos de escritura = 128 + 128 = 256
F allos totales = 392
5.120 − 392
HrM caI = = 0, 9234
5.120
SI
c) Teniendo en cuenta que la polı́tica de lectura es out of order fetch, el tiempo de penalización en caso de
fallo de lectura es el tiempo de leer una palabra de memoria principal. Ası́ el tiempo medio de acceso a la McaI
es el siguiente:
AT
tacc = TM ca + Mr × TM p = 2 ns + (1 − 0, 9998) × 50 ns = 2, 01 ns

El tiempo de penalización en caso de fallo de escritura es el tiempo de escribir una palabra en memoria
principal. Ası́ que no hay que distinguir entre fallos de lectura y escritura y el tiempo medio de acceso a la
McaD es el siguiente:
D

tacc = TM ca + Mr × TM p = 2 ns + (1 − 0, 9234) × 50 ns = 5, 83 ns

d) Existe proximidad de referencia espacial en los accesos a las estructuras de datos puesto que se accede
al elemento almacenado a continuación en cada iteración del bucle interno. Además, existe proximidad de
referencia temporal en los accesos a los elementos de los vectores ya que se vuelven a hacer referencia a los
mismos elementos en las distintas iteraciones del bucle externo.
e) Como hay tres niveles de tablas de página, se descompone en 4 campos: 3 para indexar en la tabla de
página de cada nivel y el desplazamiento dentro de la página.
El campo desplazamiento tendrá 13 bits ya que las páginas son de 8 KB. Como todas las tablas de página
ocupan una página y cada entrada es de una palabra de 4 B, las páginas tendrán 2 Kentradas. Por lo tanto se
necesitarán 11 bits para indexar en las tablas de páginas.
Lo que nos da un total de 46 bits (3 · 11 + 13) para las direcciones virtuales y un espacio de direcciones de
246 bytes = 64 TB. Las direcciones virtuales se interpretarı́an ası́:

45 35 34 24 23 13 12 0
Entrada PVN1 Entrada PVN2 Entrada PVN3 Desplazamiento
11 bits 11 bits 11 bits 13 bits

f ) Las matrices tienen 1.024 elementos de 4 bytes, por lo tanto cada una ocupa 4 KB. La matriz A está alineada
a página puesto que los 13 bits de menor peso de su dirección fı́sica, que no se traducen, están a 0. Es decir,
ocupa exactamente la primera mitad de una página.
19 de abril de 2021 Arquitectura de Computadores (Grado II) Página 6 de 6

Como las demás estructuras de datos están a continuación, todas las estructuras de datos caben en dos
páginas. En una se ubicarı́an las matrices A y B y en la otra la matriz C y los dos vectores que ocupan 128 bytes
cada uno, quedando aún espacio en esta página.
La dirección de comienzo del código no está alineada a página puesto que sus 13 bits de menor peso son
0x1000. Es decir, comienza justo en mitad de una página y los 3 bloques del código se ubican en la misma
página virtual. Ya que son 22 instrucciones de 4 bytes lo que supone mucho menos de media página.
Con lo que únicamente utilizarı́amos 3 entradas de la TLB para traducir las direcciones del código y de las
estructuras de datos.
g.1) En una TLB con al menos 3 entradas, sólo se producirán 3 fallos de primera referencia. El número total
de accesos a datos e instrucciones se ha calculado en el apartado b). De modo que:

15.553 + 5.120 − 3
HrT LB = = 0, 99985
15.553 + 5.120

g.2) El campo desplazamiento de 13 bits, que no se traduce, contiene los campos conjunto de 8 bits y byte de
5 bits. Por lo tanto, el tiempo mı́nimo se produce cuando hay acierto en TLB y caché. Como se puede solapar
la traducción con el acceso a las memorias cachés, el tiempo de mı́nimo de acceso será el máximo de ambos:
2 ns de acceso a la memoria caché.
El tiempo máximo de acceso será la suma del tiempo máximo de traducción y del tiempo máximo de acceso
a la información. El tiempo máximo de traducción se produce cuando hay un fallo en la TLB y hay que traducir
en los 3 niveles de página de memoria principal.

tmáximo
SI
traducción = 1 ns + 3 × 50 ns = 151 ns

El tiempo máximo de acceso a la información se produce al acceder a datos, cuando hay fallo en la memoria
caché y el bloque a desalojar está modificado:
AT
tmáximo inf ormación = 2 ns + 60 ns + 50 ns = 112 ns

Ası́ se obtiene:

tmáximo acceso = 151 ns + 112 ns = 263 ns


D

También podría gustarte