Asd Asd Asdas
Asd Asd Asdas
Asd Asd Asdas
b)
Datos: Espacio virtual -> 2^32 bytes
Memoria RAM limitada por hardware -> 16 MiB
Tamaño de dirección física -> 24 bits
1
Para que la tabla de páginas entre en una página entonces:
tabla de páginas <= tamaño de página
2
Otra opción podría ser la tabla de páginas invertida. En este tipo de
implementación hay una entrada por cada frame de la memoria principal.
Por lo tanto, en el sistema solo habrá una tabla de páginas invertida y esta
solo tendrá una entrada por cada frame en la memoria física. La principal
ventaja es que reduce la memoria física ocupada por la tabla de páginas
(reduce el tamaño de la tabla de páginas). Luego, al ser la tabla de menor
tamaño, esta podría llegar a entrar en una sola página.
3
c) 80% de 1720 → 0,8 x 1720 = 1376 x 2 bytes =2752 bytes
20% de 1720 → 0,2 x 1720 = 344 x 4 bytes = 1376 bytes
d)
TLB = cantidad de entradas x (TAG + VALOR(numero de frame,
bit de valido, etc))
= cantidad entradas TLB x (número páginas + número frame +
bits extra)
= 10 x (13bits + 7bits) = 200 bits para 10 entradas TLB
Asumiendo que no hay bits extras como por ejemplo bit de valido, dirty
bit, etc.
Punto extra:
d)
Tamaño de la tabla de páginas = (número de frame + BITS EXTRA) x cantidad pág
4
Cantidad de páginas = 8192
Luego:
Tamaño de la tabla de páginas = (7 + 5) x 8192 = 106496 bits = 13312 bytes
= 6,5 páginas
5
a) 1 MiB = 2^20
8 MiB = 8 x 2^20 = 8388608 bytes espacio físico direccionable.
dirección física = log2(8388608)= 23 bits
c) 1 MiB = 2^20
8 MiB = 8 x 2^20 = 8388608 bytes espacio físico direccionable (MEMORIA
PRINCIPAL)
tamaño página <-> tamaño de frame = 4096 bytes
Cant frames = tamaño mem ppal / tamaño pag
= 8388608 / 4096 bytes = 2048 frames
6
El mapeo al utilizar los últimos bits de la página reduce la cantidad de
páginas, esto es, reduciendo las direcciónes lógicas para memoria física y
disco. A su vez reduce la cantidad de frames en función de la RAM
disponible, resultando en que la tabla no podrá representar todas las
direcciones físicas necesarias para cubrir el hardware.
^^dudoso^^
7
1) Dirección virtual = 25 bits
Dirección física = 22 bits
Tamaño de página = 2^16 bytes
Cada entrada de la tabla tiene: numero de frame, bit de valido y dirty bit.
Por lo tanto:
Tamano de tabla de páginas = (número de frame + BITS EXTRA) x cant pág
= (6 + 2) x 512 = 4096 bits = 512 bytes
4) Si es posible, para esto el número de tag debería ser igual al número de página ya
que si son iguales podría buscar al mismo tiempo en caché y en tabla de páginas.
Si no fuese así, primero debería buscar en caché con el tag, y recién ahí, si el tag
no se encuentra en cache, tendría que buscar en la tabla de paginas con el
numero de pagina.
8
Además de las políticas LRU y Pseudo-LRU en caché, otras políticas de
reemplazo pueden ser First-in-First-Out (FIFO) o Random. Una política
FIFO reemplaza el bloque que está hace más tiempo en la caché,
independientemente de cuán recientemente haya sido accedido. La
política Random elige al azar una bloque para reemplazar.
a)
FIFO:
Ventajas:
● Es más económico de implementar ya que no necesita de un bit
U, como en el caso del LRU.
● Si el bloque menos accedido es el que lleva más tiempo en
caché, entonces es conveniente que se elimine.
● Mantiene los datos recientemente accedidos.
Desventajas:
● Al no llevar un control de los bloques menos recientemente
usados, es posible que se eliminen bloques que usan
constantemente, generando así, que haya que ir a buscarlos a
memoria principal cada vez que se los necesite; lo cual es muy
costoso.
● Poco eficiente, ya que no ahorra accesos a memoria.
● Puede generar PAGE FAULT temprano.
9
RANDOM:
Ventajas:
● Posee las ventajas de que por un lado su implementación
requiere un mínimo de hardware y por otro lado no es
necesario almacenar información alguna para cada bloque.
● Bajo costo.
● Poco consumo de recursos.
● Útiles para sistemas con poder de procesamiento limitado.
● Al ser al azar existe la posibilidad (en un caso ideal) de que se
reemplacen siempre los datos que no van a ser necesarios
próximamente (aunque esto es un caso poco probable).
Desventajas:
● No es eficiente.
● Es posible que se reemplacen datos útiles.
● Mayor Miss Rate y Menor Hit Rate con respecto a otras
políticas.
c) Para que la caché implemente una política FIFO es necesario saber cual
es la cabeza y cual es la cola de la Cola de caché. De este modo podremos
saber cual es el bloque hay que eliminar (cabeza) y cual es el bloque donde
hay que insertar el nuevo elemento (cola). El sistema operativo se encarga
de realizar un seguimiento de todas las páginas de la memoria en la cola,
por lo que no es necesario que la caché deba almacenar algún tipo de
información extra como por ejemplo el bit U en la política Pseudo LRU.
10
11
1)¿Cuál es el tamaño en bytes de cada página?
Tamaño en bytes de cada página = 2^8 = 256 bytes
12
3) El bit U es el bit de “Último usado” e indica cuál “way” fue el menos
recientemente usado, se utiliza para llevar a cabo el algoritmo de reemplazo LRU.
4)
L = 32 bytes (Memoria caché con 8 líneas de 32 bytes)
d = log2(32) = 5
M = 2 ( 2 way associative)
C = 8 (cant de líneas de la caché 8)
R1 ← Mem[010802 H]
13
Finalmente obtengo la letra “u” (referenciada por el byte 2) y la guardó en
memoria de R1 (R1 ← ‘u’).
5) 010A4F
Procedo a buscar en la línea 2 (ya que index = 2) y el Tag = 502. Como ocurre que
ese tag no se encuentra dentro de la línea de caché ocurre un Miss.
14
PIPELINE
15
a) Datos:
SpeedUp = 4 (enunciado a)
Etapas pipeline = 5
CPI ideal = 1
4 = __ 1 x 5____________________________
1 + (0,1 * 0,2 * 3) + (0,02 * 3) + (0,3 * X * 2)
16
4 = 5 / 1 + (0,06) + (0,06) + (0,6X)
4=5/(1,12) + (0,6X)
4*[(1,12) + (0,6X)]=5
4,48 + 2,4X = 5
2,4X = 0,52
X=0,21
Luego, el porcentaje de loads seguidos de una instrucción que usa el dato para
obtener un SpeedUp de 4 es del 21%.
b) Datos:
Se adelanta a la etapa de Decode la resolución de los Jumps
R1 [a+b] F D E M WB
load[R1] F D DS E M WB → Instrucción que hace load de un registro R1
17
a)
18
b) CPI BASE: 1.2
20% instrucciones son branch de los cuales 65% son branch tomados.
35% son branch NO tomados.
Unidad de predicción de branch predice erróneamente 12% veces.
Unidad de predicción de branch predice correctamente 88% veces.
c)
%NT/PNT = 0 ciclos (no lo tengo en cuenta)
%T/PT = 2 ciclo x 0.65 x 0.88
%NT/PT =3 ciclos x 0.35 x 0.12
%T/PNT =3 ciclos x 0.65 x 0.12
19
Tiempo de mejora = CPI * Tiempo en ns
1,3624 x 2 ns = 2,7748
1,5008 x 1,67 = 2,5063
20
Si se hacen 2500000 instrucciones por seg se estaría perdiendo 70275 instrucciones
por segundo en controlar el mouse
(70275*100)/2500000 = 2.811 %
El 2.8 % del tiempo el CPU está controlando el mouse
0.02811*2500000 = 70275
CACHE
21
a) Tamaño de caché = 4 KB = 4096 bytes
Tamaño de lineas = 16 bytes
Cantidad de líneas = 4096/16 = 256 líneas de caché.
Datos:
L = 16 bytes
m=1
C = 256
Dirección: como las direcciones físicas tienen 8 bits en hexa (0000 4000
H), y cada bit en hexa ocupa 4 bits, entonces 8 x 4 = 32. Por lo tanto, las
direcciones son de 32 bits.
22
El index indica el set al que corresponde cada bloque/línea.
Dirección de B[0] = 0001 0800 H
= 0000 0000 0000 0001 0000 1000 0000 0000
Tag Index Offset
Ya que por cada bloque de A y B, habrá un Miss (en el primer acceso a caché
ya que esta comienza vacía) y 3 Hits debido a que cuando se lleva todo un
bloque hacia caché, en los siguientes 3 ciclos del for, los datos que se
buscan ya van a estar dentro de caché (en cada bloque entran 4 enteros).
23
e) En memoria principal se escribieron 4096 bytes, ya que como hay una
política Writeback, cada vez que se quiera modificar un dato de un bloque
que ya fue accedido, para no perder esa modificación, se hace una copia
en memoria principal y luego se procede a hacer el reemplazo en caché.
Como en caché entran 4096 bytes, y cada arreglo es también de 4096
bytes, es por eso que a partir de la mitad de cada arreglo los datos se van a
ir reemplazando dentro de la caché y haciendo una copia en memoria
principal.
24