Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 =
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
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
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:
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:
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:
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.
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.
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: