22-02-2011, 10:57
Hola a todos queria saber si alguien tiene apuntes o finales resueltos de la parte practica de los finales, mas que nada de lo que es memoria cache.
Muchas gracias
Muchas gracias
(22-02-2011 17:10)angel escribió: [ -> ]Hola, tengo un monton de problemas para resolver este ejercicio del final de diciembre del 2009, utilice el buscador pero no lo encontre resuelto, asi que aca lo dejo por si alguien quiere ayudarme: y gracias de antemano.
Para la siguiente instruccion:
1522:0100 ADD [BX+SI],AL
*Calcule la direccion fisica del primer byte (15220+0100=15320)
*indique la funcion del registro BX en relacion a SI
Quiroga páginas 266-269, Angulo páginas 159-160
El registro BX actúa como base y SI como índice, SI tiene la propiedad de autoincrementarse después de usarlo, lo cual lo hace útil para recorrer vectores
*si BX tiene un valor =0400 y Si un valor =000A ¿cual sera la direccion segmentada en donde se alojara el resultado de la suma? DS:040A ¿esta bien?
Tengo entendido que sí
1522:0100 mov AX,0B
1522:0103 sub AX,FF
1522:0106 ret
*Luego de la ejecucion de las primeras dos instrucciones, cual es el valor de AX, y cual es el valor final de las banderas S Z V C? AX=FF0C S:1 Z:0 C:1 y V que es??
V es Overflow, vale 0. Me parece que AX queda 000C
*A que registro puntero afecta la ejecucion de la ultima instruccion (la instruccion ret lo que hace es un retorno de un procedimiento, pero no se a que puntero afecta)
Cuando se hace un call, se guarda el valor de IP en la pila, al hacer RET se saca el valor de la pila y se vuelve a cargar en IP para continuar desde la instruccion siguiente a la que hizo call, por lo tanto afecta a SP e IP.
(22-02-2011 20:14)Anirus escribió: [ -> ](22-02-2011 17:10)angel escribió: [ -> ]Hola, tengo un monton de problemas para resolver este ejercicio del final de diciembre del 2009, utilice el buscador pero no lo encontre resuelto, asi que aca lo dejo por si alguien quiere ayudarme: y gracias de antemano.
Para la siguiente instruccion:
1522:0100 ADD [BX+SI],AL
*Calcule la direccion fisica del primer byte (15220+0100=15320)
*indique la funcion del registro BX en relacion a SI
Quiroga páginas 266-269, Angulo páginas 159-160
El registro BX actúa como base y SI como índice, SI tiene la propiedad de autoincrementarse después de usarlo, lo cual lo hace útil para recorrer vectores
*si BX tiene un valor =0400 y Si un valor =000A ¿cual sera la direccion segmentada en donde se alojara el resultado de la suma? DS:040A ¿esta bien?
Tengo entendido que sí
1522:0100 mov AX,0B
1522:0103 sub AX,FF
1522:0106 ret
*Luego de la ejecucion de las primeras dos instrucciones, cual es el valor de AX, y cual es el valor final de las banderas S Z V C? AX=FF0C S:1 Z:0 C:1 y V que es??
V es Overflow, vale 0. Me parece que AX queda 000C
*A que registro puntero afecta la ejecucion de la ultima instruccion (la instruccion ret lo que hace es un retorno de un procedimiento, pero no se a que puntero afecta)
Cuando se hace un call, se guarda el valor de IP en la pila, al hacer RET se saca el valor de la pila y se vuelve a cargar en IP para continuar desde la instruccion siguiente a la que hizo call, por lo tanto afecta a SP e IP.
(22-02-2011 20:14)Anirus escribió: [ -> ](22-02-2011 17:10)angel escribió: [ -> ]Hola, tengo un monton de problemas para resolver este ejercicio del final de diciembre del 2009, utilice el buscador pero no lo encontre resuelto, asi que aca lo dejo por si alguien quiere ayudarme: y gracias de antemano.
Para la siguiente instruccion:
1522:0100 ADD [BX+SI],AL
*Calcule la direccion fisica del primer byte (15220+0100=15320)
*indique la funcion del registro BX en relacion a SI
Quiroga páginas 266-269, Angulo páginas 159-160
El registro BX actúa como base y SI como índice, SI tiene la propiedad de autoincrementarse después de usarlo, lo cual lo hace útil para recorrer vectores
*si BX tiene un valor =0400 y Si un valor =000A ¿cual sera la direccion segmentada en donde se alojara el resultado de la suma? DS:040A ¿esta bien?
Tengo entendido que sí
1522:0100 mov AX,0B
1522:0103 sub AX,FF
1522:0106 ret
*Luego de la ejecucion de las primeras dos instrucciones, cual es el valor de AX, y cual es el valor final de las banderas S Z V C? AX=FF0C S:1 Z:0 C:1 y V que es??
V es Overflow, vale 0. Me parece que AX queda 000C
Pero overflow no es OF? y otra cosa, 0B-FF=ffffff0C por overflow, quedaria FF0C, o no? ademas con el emu8086 me da asi
*A que registro puntero afecta la ejecucion de la ultima instruccion (la instruccion ret lo que hace es un retorno de un procedimiento, pero no se a que puntero afecta)
Cuando se hace un call, se guarda el valor de IP en la pila, al hacer RET se saca el valor de la pila y se vuelve a cargar en IP para continuar desde la instruccion siguiente a la que hizo call, por lo tanto afecta a SP e IP.
(22-02-2011 20:53)Anirus escribió: [ -> ]Ahora rehago la cuenta que hice cualquier cosa, me olvidé de que FF era 00FF por estar trabajando con AX. Overflow es OF en el Pentium, en la cursada lo vi como V, creo que está en el libro de Quiroga, ahora lo reviso.
Sí, página 76.
A ver, 000B-00FF = 00000000 00001101 + 11111111 00000001 = 11111111 00001110 = FF0B
Pero 0b es 11 en decimal, ff es 255, 11-255= -244 => ff0c (65292) porque seria restarle 244 a 64k
lo que pusiste como 000b en binario: 00000000 00001101 = 000D
000b es 1011
Overflow me parece q no hubo, porque no le estoy restando -1111111111111111, sino 0000000011111111. El signo da negativo entonces S=1, no es 0 entonces Z=0, y por esto hubo carry: http://www.utnianos.com.ar/foro/showthre...4#pid96874
(22-02-2011 22:42)Anirus escribió: [ -> ]Lo que no entiendo es porque la calcu me pone FFFFFF0C como resultado, en emu8086 no me marca overflow. Salvo que la calcu esté trabajando con 32bits.
(22-02-2011 13:40)Anirus escribió: [ -> ]Acá tenés varios resueltos:
http://www.utnianos.com.ar/foro/showthre...8#pid24998
http://www.utnianos.com.ar/foro/showthread.php?tid=5113
Totalmente asociativa:
La direccion se divide en Etiqueta y posición, y la memoria en bloques de tamaño determinado. Cada bloque puede ir en cualquier lugar de la caché. Si te dan una direccion y te preguntan si el dato está, solo tenés que fijarte si en el grafico aparecen los bits de la etiqueta en cualquiera de las lineas.
Etiqueta: La obtenés dividiendo la memoria principal por el tamaño de los bloques, expresas el resultado como potencia de 2 y el exponente es la cantidad de bits de la dirección que se usan como etiqueta.
Posición: Expresas el tamaño de los bloques como potencia de 2, el exponente es la cantidad de bits que se necesitan.
Asociativa de 1 via:
La direccion se divide en Etiqueta, Linea y Posición. El lugar que ocupa cada bloque en la caché depende de los bits de linea. Si te dan una direccion, mirás los bits de linea, supone que son 011, en decimal eso es 3, por lo tanto te tenés que fijar si en la linea 3 del gráfico aparece la misma etiqueta de la dirección, si no aparece ahi, es porque el dato no está, si está, usas los bits de posición para indicar el dato.
Etiqueta: Se obtiene dividiendo la memoria principal por el tamaño total de la memoria caché. Se expresa como potencia de 2 y tomas el exponente.
Linea: En el enunciado te van a decir la cantidad de lineas del caché, casi siempre ponen 8, así que la cantidad de bits que se necesitan es 3 porque 2^3 es 8.
Posición: Se obtiene igual en todas las caché.
Asociativa de n vías
La dirección se divide en Etiqueta, Grupo y Posición.
Si te dan una dirección, una vez dividida, para fijarte si aparece en la caché mirás el Grupo, supongamos que es 010, o sea grupo 2. Entonces tenés que fijarte si en alguna de las vías, aparece tu etiqueta en la linea 2. Acordate de que si aparece en otro lugar NO es el que buscás.
Etiqueta: Como en la anterior pero dividiendo por el tamaño de las vías en lugar del tamaño total de la caché.
Grupo: Tambien como en la de 1 vía, excepto porque en lugar de tener en cuenta el total de lineas del caché, usás la cantidad de lineas que hay por vía, es decir, si hay tres vías de 8 lineas, la cantidad de bits que se necesitan es 3.
Posición: Como en todas.
Yo no calculo nunca la etiqueta, calculo posicion y linea/grupo porque salen a ojo y sé que lo que sobra va a ser la etiqueta. Así que si ves que la forma en la que escribí que se calcula la etiqueta no se corresponde con los ejercicios que te pasé, significa que me confundí yo.
(22-02-2011 23:04)guidoakd escribió: [ -> ]Ojo que en la de N vias la etiqueta tenes que dividir x el tamaño cache de 1 sola via
(22-02-2011 23:12)Anirus escribió: [ -> ](22-02-2011 23:04)guidoakd escribió: [ -> ]Ojo que en la de N vias la etiqueta tenes que dividir x el tamaño cache de 1 sola via
Eso dije, por el tamaño que tienen las vías en lugar del tamaño que tiene toda la caché, es decir, si la caché es de 8KB y tiene 4 vías de 2KB, divido por 2KB. Creo que el problema está en la parte que dije "Como en la anterior", fue para ahorrarme poner "expreso en potencia de 2 y la cantidad de bits es el exponente"
(22-02-2011 23:17)guidoakd escribió: [ -> ]me aclaras dp el de 0B - FF plz
gracias