UTNianos

Versión completa: [Arquitectura] Final: Duda con pregutas clásicas
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola gente, estaba preparando el final de arquitectura (que ya se me vence Angry) y me surgieron algunas dudas con ciertos ejercios, que seguro son una pavada, a saber:

Final 24/02/2010:
Ej Practico 1:

No entiendo bien el punto c:

Sabiendo que una CPU genera una dirección de 33 bits que permiten acceder a la memoria principal de palabra de 8 bits.
a) Cual es el tamaño potencial de la memoria principal.
Rta: 8 Giga (2^33)
b) Si a la memoria se le habilitan 4 Giga ¿Cuántos bits son significativos para direccionarla?
Rta: 32 bits (2^32 = 4Giga)
c) Si de los 4 Giga los últimos 64 K dentro del primer mega direccionan a la memoria ROM, cual es el rango de direcciones hexadecimales que le corresponden.

En la respuesta oficial dice 00000000 - 000FFFFF

No entiendo porque el rango finaliza justo donde termina el primer mega y donde juegan los 64K Confused.



Final 29/10/2009
Ej Resolver 1:


Dada la siguiente situación y sabiendo que la CPU genera una dirección de 24 bits que permiten acceder a la memoria principal y a la caché de 64 lineas:
Tengo:
[MP]
[E][L][5 bits] = 24 bits.
[MCache] = 64 líneas.
Indicar:
5) Cuanto valen los campos E y L
En la respuesta oficial dice L = 8bits ya que son 64 líneas. E= 11 bits.
No entiendo como llegan a esa conclusión, yo pensaba que era L=6bits ya que 2^6=64 y por ende la etiqueta valía por 24-5-6 = 13.


--

Y por último un tipo de ejercicio que vi un par de veces y no entiendo:
Para implementar una memoria de 256K x 16 usando componentes de 16K x 8 se requieren:
* ____ componentes:
* Organizados en ___ filas de ___ columnas;
* Y se requiere un selector de ___ bits.
En la respuesta oficial sería: 32 componentes, 16 filas de 2 columnas, selector de 4 bits.

Desde ya, muchas gracias!
Me parece que es tramposa la respuesta c, para mi esta para confundir, en hexa, el rango de direcciones es el mismo, ya sea RAM o ROM
El segundo, tenes razon, no falta algo del ejercicio ? Algun dato mas ?
El tercero es: Memoria a implementar / CI Disponibles = Cantidad de CI ==> (256 k * 16)/(16 k * 8) = 32 CI, vos necesitas que tenga 16 bits de ancho, como tus CI tienen 8 entonces son 2 columnas. Lo mismo para 256 y 16, necesitas 16, uno abajo de otro para llegar a 256.

Lo del selector te lo debo, creo que viene por los 16 bits que formas (2⁴) pero por ahi estoy tirando fruta.
Se me paso el tiempo y no puedo editar, con respecto al segundo, es asociativa de una via, si para la posicion necesito 5 bits ==> tamaño de la cache son las 64 lineas * 2⁵ = 2 KB ==> 16 MB / 2 KB = 8192 grupos, y necesito 13 bits para la etiqueta con lo que me quedan 5 bits de la posicion y 6 bits de la linea... estara mal la resolucion ??
Probablemente este mal, yo no le encuentro otra explicación. Por lo demás, muchas gracias por la respuesta!

Lo que si, sigo sin entender el punto 1. Quiza expresé mal mi pregunta, pero no veo como llega a 000FFFFF

Desde ya muchas gracias!
(20-12-2010 18:29)Ricki escribió: [ -> ]Se me paso el tiempo y no puedo editar, con respecto al segundo, es asociativa de una via, si para la posicion necesito 5 bits ==> tamaño de la cache son las 64 lineas * 2⁵ = 2 KB ==> 16 MB / 2 KB = 8192 grupos, y necesito 13 bits para la etiqueta con lo que me quedan 5 bits de la posicion y 6 bits de la linea... estara mal la resolucion ??

Es correcto Ricki , gracias !!roll

(19-12-2010 01:59)groklee escribió: [ -> ]c) Si de los 4 Giga los últimos 64 K dentro del primer mega direccionan a la memoria ROM, cual es el rango de direcciones hexadecimales que le corresponden.

En la respuesta oficial dice 00000000 - 000FFFFF

No entiendo porque el rango finaliza justo donde termina el primer mega y donde juegan los 64K Confused.

Tampoco me cierra a que apunta este practico wall
Con la c), pareciera estar mal el resultado. Si la memoria total son 4GB, para direccionarlos necesitás 32 bits, osea que las direcciones van a ser de 32 / 4 = 8 caracteres hexa (cada caracter son 4 bits). Entonces, el rango de direcciones total es de 0x0000 0000 a 0xFFFF FFFF.

Ahora bien, habla de los últimos 64k del primer mega. El primer mega va desde 0x0000 0000 hasta 0x000F FFFF. Pero, si sólo son los últimos 64k de ese MB, en lugar de arrancar en 0x0000 0000 arranca en 0x00F 0000. Los últimos 4 dígitos son 4x4 = 16 bits, dando 2^16 = 65536 direcciones (64k), por lo que los últimos 64k del primer mega son todas las direcciones del formato 0x000F ????.


Le habrán pifiado con el 0x0000 0000.
Para mi el rango es [000F0000 - 000FFFFF]

El rango de 1 mega tiene 5 digitos (20 bits / 4 bits) entonces es [00000 - FFFFF], le agrego los 3 digitos para meter al mega dentro de los 4GB (que tienen 32 bits. 32/4 = 8) y que me queden los 8 digitos: [00000000 - 000FFFFF]

Nos piden que metamos los ultimos 64KB en el mega. Entonces sabemos que el rango termina en 000FFFFF].

Para saber en donde empieza, primero tengo que pensar cual es el rango de 64KB.
64kb = 2^6 * 2^10 = 2^16. Entonces usa 16bits para direccionar. Los divido por los 4 bits que usa cada digito hexa. 16 / 4 = 4.

Entonces el rango de 64kb es [0000 - FFFF]. Le voy a tener que agregar los 4 digitos, que le faltan para tener los 8 digitos que se usan en los 4gb.

Si el Mega tiene por rango: 000FFFFF. Y Los 64KB tienen FFFF.
Si los resto obtengo en donde comienza el rango:

000FFFFF
-0000FFFF
--------
000F0000

Listo. La respuesta es [000F0000 - 000FFFFF]
URLs de referencia