calculo de lineas de cache y bloques de ram [SOLUCIONADO]

Iniciado por KandiZickZad, 22 Noviembre 2010, 19:20 PM

0 Miembros y 1 Visitante están viendo este tema.

KandiZickZad

tengo una pregunta, estoy estudiando para un examen pero no se si el ejemplo que nos dio el profesor esta correcto.

si tenemos esto:

RAM = 1GB
Cache = 1KB
Tamaño de linea de cache = 64B

entonces, uno hace el calculo de lineas de caché, lo cual nos dice que serían 16 líneas de caché. mi duda es cómo se puede calcular la cantidad de bloques de ram.

yo pensé que tenía que primero calcular el tamaño de cada bloque, que tiene 16 lineas de 64B, osea tiene 1024B y luego dividir la cantidad de bytes de la RAM (1073741824 bytes) entre el tamaño en bytes de cada bloque (1024B), y que eso nos retorna la cantidad de bloques en ram....pero a mi eso me dá 1048576 bloques, y el ejemplo que el profe nos dió retorna 16,384 bloques de ram...

me gustaría saber si mi cálculo es correcto, o si estoy cometiendo un error en alguna parte.

gracias por su tiempo XD




d(n n)b

Sauruxum

No soy tecnico ni mucho menos, pero creo que es como en los registros de 32 bits que pueden soportar las direcciones de memoria hasta los 4 Gb y eso es porque es el maximo que permiten 32 bits:

seria algo como 2^32=4294967296=4Gb

Lo mismo pienso es en este caso, con 16 lineas puede direccionar a una cantidad de memoria de 2^16=65536 y eso dividido para la memoria total de 1 Gb te da 16384

Eso pienso, pero que te lo confirme alguien que esto nunca lo he estudiado en ningun lado.

Saludos

KandiZickZad

umm tu respuesta tiene bastante lógica o.o

he estado estudiando el ejemplo, y logré llegar a ese resultado de la siguiente manera:

a. el tamaño de cada bloque es de #lineasDeCache * tamañoLinea (tamañoBloque=1024 bytes)
b. #DireccionesTotal = ramEnBytes / tamañoBloque (1073741824 bytes / 1024 bytes = 1048576)
c. Si se supone que el número de direcciones por bloque es 64 (en esta árte ya estoy medio insegura), y tengo  1048576 direcciones en total... #DireccionesTotal /#DireccionesBloque= #Bloques (1048576 / 64 = 16384)

De esta forma, también obtengo el resultado que debería obtener...y tiene un poco de lógica para mí, pero me cuesta estar segura de que sea la correcta y de que siempre funcione...

Entonces, sigo esperando otra respuesta. Al menos para saber si la de Sauruxum es la correcta.

Graciaaaaaaaaas XD




d(n n)b

Artikbot

Sauruxum tiene razón.

Por cierto, por casualidad estás haciendo grado medio de informática y esa pregunta salió en un examen? Un amigo me hizo exactamente la misma pregunta por GTalk en medio de un examen.



Monto ordenadores a medida, me ajusto a todo tipo de presupuestos. Contáctame para más información.
Sólo para España peninsular y Baleares

KandiZickZad

Wajajaja nopi, estaba estudiando para un exámen de Arquitectura de Computadores que tuve hoy =.=

Por dicha al final sí comprendí claramente la respuesta XD

Muchas gracias por haberme respondido  ;)




d(n n)b