Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Flags y Saltos Q4
hay que alterar el PC mediante instrucciones especiales: Con Saltos
Categoría de saltos:
Salto Relativo: el valor del PC se desplaza hasta llegar a la dirección teniendo que pasar por
otras direcciones antes, EL PC SE INCREMENTA EN 1
Saltos Incondicionales: tiene que saltar, no importa las condiciones, es un salto de Orden
JE 0001 igual/cero Z
Estructura general:
Inicialización
arriba: Controlar Condición de ciclo
Si no se cumple: <salir>
Cuerpo del ciclo
Volver <arriba>
salir: Finalizar programa
EJ
inició el resto = 14
controlar si resto es mayor a 3
si NO se cumple la condición, salir
Restar: resto = resto -3
volver al paso 2
Estructura de control
estructuras que permiten controlar el flujo de secuencialidad de un programa
¿cómo guardo los datos?
con Arreglos
Arreglos:
son posiciones de memoria de manera consecutiva, donde el tamaño del arreglo tienen el
mismo tamaño, sea en forma secuencial como en la primera imagen(6) o pedazos
elementos (3) es el mismo tamaño los 2 arreglos pero agrupan diferente los elementos
Modo Indirecto:
por registro: [Rx] (contiene un valor de memoria)
ej MOV R0, [R5] ←– se tiene que ir a fijar que hay dentro del Indirecto [R5] dentro de [R5] hay
una dirección que tiene que ir a buscar a memoria
hace 1 acceso a memoria
Indirectos: [[0xHHHH]]
primero va a ir a dirección de memoria del primer corchete [0xFFFF] y va a tener un valor y
eso va a ser una nueva dirección de memoria
Indirecto: 011000
Registro Indirecto: 110rrr
REPASO
Fórmulas
tasa de acierto: Ta
tasa de acierto: Tf
0xCA09
0xCA09 CA 0 9 f
0xCA0A CA 0 A a
0xCA0B ca 0 b a
0xCA0C ca 0 c a
0xCA0D ca 0 d a
0xCA0F ca 0 f a
0xCA10 ca 1 0 f
0xCA11 ca 1 1 a
0xCA12 ca 1 2 a
0xCA13 ca 1 3 a
0xCA14 ca 1 4 a
0xCA0B ca 0 b f
0xCA0C ca 0 c a
0xCA0D ca 0 d a
0xCA0F ca 0 f a
0xCA10 ca 1 0 f
0xCA11 ca 1 1 a
0xCA12 ca 1 2 a
0xCA13 ca 1 3 a
0xCA14 ca 1 4 a
0xCA0B ca 0 b f
0xCA0C ca 0 c a
0xCA0D ca 0 d a
0xCA0E ca 0 e a
si no cambia el tag y la línea pero si cambia la palabra entonces es un fallo con desalojo
.
n(ta×tc + tf(TC+tm))
tasa de acierto: Ta
tasa de acierto: Tf
n: total = 24
a: aciertos = 19
f: fallos =5
1000(930×0,3 + 70(0,3+tm))
n es la cantidad de accesos a cache
Linea / Tag
F1 /C
F1 /A
F1 /C
CACHE Q6
¿Qué es caché?
es una memoria que está entre CPU y RAM
● provee una velocidad de acceso parecida a los registros
● provee un mayor tamaño de memoria
¿Cómo trabaja el cpu con el caché y la ram?
el CPU le pide una lectura de celda al CACHE y el CACHÉ si tiene el dato entonces se lo
pasa al CPU.
De ser lo contrario y el CACHE no tenga el dato solicitado por la CPU entonces tendrá que
ir a leer a la Memoria Principal, almacenar el dato en caché y enviarlo al CPU
la RAM es más lento que el procesador por eso necesita una memoria de por medio para
que sea más rápido la memoria CACHÉ
hacer memorias rápidas son muy caras y tiene poco espacio
Volatilidad: la memoria es volátil cuando la memoria se queda sin energía y se borra todos
los datos y no almacena información
Métodos de acceso
Secuencial: la memoria debe recorrer secuencialmente para buscar el dato
Principio de Localidad
Localidad Espacial
La posiciones más cercanas son las más probables de ser referenciadas que las distantes
cuando estás recorriendo un arreglo lo más probable es que vas a acceder a una dirección
más cercana a la que estas
Localidad Temporal
cuando un programa hace referencia a una posición de memoria, se espera que vuelva a
hacerlo en poco tiempo
- para saber la cantidad de celdas que hay la cuenta que hay que hacer es
los Bytes o bits de la celda / el tamaño del bloque
EJ
● memoria principal de 16 celdas 1 Byte cada una
● memoria cache de 4 líneas
● bloques de 1 celda
● función de correspondencia directa
¿qué tamaño tiene el tag?
Desalojo y Escritura
Políticas de desalojo:
son las que van a marcar donde va a guardar los datos cuando el mapeo no es directo
● Algoritmo LRU (Least REcently Used = Menos recientemente usado):
se reemplaza el bloque que fue usado hace más tiempo (tiene que guardar cuando
fue la última vez que se consultó esa línea en memoria caché)
● Algoritmo FIFO (First in - FIrst Out = el primero que llega es el primero que se va)
se reemplaza el bloque de celda en memoria cache que estuvo almacenada por mas
tiempo
● Algoritmo LFU (Least Frequently Used = menos frecuentemente usado)
se reemplaza el bloque que accedió menos veces
● Algoritmo Random
reemplaza al azar, menos performante, no necesita información extra
Políticas de Escritura:
¿Cómo escribo en memoria caché?
● Write through: Se escribe inmediatamente a memoria entonces las escrituras no se
benefician de caché, cada vez que tengo que escribir entro a memoria principal
● Write back: se marca la celda como sucia(es información extra que debemos
guardar) Cuando el bloque de esa celda es desalojado, escribe a memoria. (Escribo
en memoria caché en vez de escribir en principal)
REPASO DE RECUPERATORIO
parcial 2
4)
test MOV RO, 0x0002
arriba: CMP RO, 0x000
JE fin
MOV R5,[R1]
ADD R3,R5
SUB R0, 0x0001
JMP arriba
fin: RET
Empieza 0xAD90
4 bits para tag, 8 de bits para linea, 4 bits para palabra (DIRECTO)
la pila almacena el valor de retorno de test, SP contiene 0xFFEE
PC se encuentra en 0xAD90
R1 0xCD91
0xAD91 a d9 1 a
0xAD92 a d9 2 a a a
0xAD93 a d9 3 a a a
0xAD94 a d9 4 a a a
0xAD95 a d9 5 a a
0xCD91 C D9 1 F F
0xAD96 a d9 6 f f
0xAD97 a d9 7 a a
0xAD98 a d9 8 a a
0xAD99 a d9 9 a a
0xAD9A a d9 A a a
0xAD9B a d9 b - a
FFEE f fe e f
T= 200(0,75 . 3+ 0,25(3+100))
200.(2,25 + 0,25 .103)
200.(2,25+25,75)
200.28
5,600
3(
cuantos bits necesita tag, línea y palabra
● directo
● memoria cache: 256 líneas con un bloque por línea =2a la8 linea
● bloques de celda: 32 = 2a la5 palabra
● bus de direcciones: 16 bits
● lo que sobra es tag
1) realiza control de calidad sobre sus vinos de primera seleccion, la normativa dice
que la botella de vino se encuentra en su apogeo para el consumo, si la fecha de
envasado tiene entre 3 y 12 años. La bodega almacena información sobre sus
productos en cadena de 16 bits, donde el Byte más significativo representa el tipo de
vino y el byte menos significativo la cantidad de años han pasado desde que fue
envasado.
● vino tinto - 01111001
● vino blanco - 11111010 FA 05
● vino rosa - 10010110 96
vino blanco: FA05
info de producto en R4
devuelve 1 en R0 si el vino está apogeo
0 en R0 si no esta apogeo
data:
96VinoRosa
mayor = 3 /*salvar 3 veces los 3 valores*/
menor = 12
MOV R3, R4
MOV R2, R4
MOV R1, R4
● 10010110
f e d c b a 00000000
ESTRUCTURA ARREGLO
índice /*dice dónde empieza*/
contador /**/
longitud
condición de fin
resuelve el programa si no se cumple condicion de fin
fin
superficieDelTrapecio
a)
R3 = R2 - (R0 + R1) / 2
ADD R0, R1
DIV R0, 0x0010
SUB R2, R0
MOV R3, R2
RET
b)
MOV R0, [0x1FE0]
MOV R1, [0x1FE2]
MOV R2, [0x1FE3]
CALL superficieDelTrapecio /*main*/
MOV R6, R3
CALL imprimirSuperficie
RET
00F0 7208
00F1 7777
00F2 7778
….
7777 000F
7778 0004
a)
0111 0010 0000 1000
0111 0111 0111 0111
0111 0111 0111 1000
4)
rutinaA: SUB R1, R2
CALL rutinaB
RET
¿Cómo varía la pila durante la ejecución del programa program? complete el cuadro
usualmente utilizado
0xB0B0 1840 0xB0B2 MOV registr inmed R1 0x3448 {0001} FFEE 0xB0B2
3448 o iato
0xB0B2 1840 0xB0B4 MOV registr inmed R2 0xE010 {0001} FFEE 0xB0B4
E010 o iato
0x123F 7848 0x1241 DIV registr direct R1 [0xCC1 {0001 FFEC 0x1241
CC12 o o 2] 0xB0B6
0xCD0
A}
INTERPRETACIÓN EXCESO
111111111111
Ibss12 (111111111111) =
1.2^11 + 1.2^10 + 1.2^9 + 1.2^8+
1.2^7+1.2^6+1.2^5+1.2^4+1.2^3+1.2^2+1.2^1+1.2^0
=4.095 - 128(delta) = 3.967
-83 + 128(delta) = 45
“se le suma el delta cuando hay que representar y se resta delta cuando hay que
interpretar”
45/2=
1 22/2
0 11/2
1 5/2
1 2/2
0 1 Representación de -83= 000000101101
SM se interpreta igual que en BSS solo que se deja de lado el primer bit para ver si
es positivo(0) o negativo(1)
0xDEC0 DE C 0 f
0xDEC1 DE C 1 A
0xDEC2 DE C 2 A
0xDEC3 DE C 3 A
0xDEC4 DE C 4 A
0xDEC5 DE C 5 A
0xDEC6 DE C 6 A
0xDEC7 DE C 7 A
0xDEC8 DE C 8 A
0xDEC9 DE C 9 A
0xDECA DE C A A
0xDEC2 DE C 2 A
0xDEC3 DE C 3 A
0xDEC4 DE C 4 A
0xDECB DE C B A
fallo con desalojo: misma línea diferente tag
fallo normal: diferente tag
8 - 2= 6 bits
tag(6 bits) palabra(2bits)
ejercicio practica MAPEO ASOCIATIVA POR CONJUNTO
¿cuántos bits son para tag, conjunto y palabra?
memoria principal 32 celdas = 2^5 5direcciones de bits
memoria caché con:
a) bloques de 4 celdas = 2^2= 2 bits para palabra
b)4 lineas = 2^2 = 2bits para línea } se juntan las 2
c) correspondencia asociativa por conjuntos, con conjuntos de 2 lineas } =4/2=2= 1bit
conjunto
16direcciones
tag 8bits
lineas 4bits
bloques de celda 16 = 4
0xABOE
deje en R0 la suma de sus deudas (Es decir de todos los valores del arreglo que son negativos)
R1 la suma de sus ventas (Es decir, de todos los valores que son positivos)
cuando el inicide es 0000 es el fin
contadores R0 y R1
1) circuito:
a) C pulsado y A o B en reposo
b) A, B y C pulsado
2) pila
main: ADD R1, R0
CALL rutinaA
RET
programa:
MOV R1, 0x10AC
MOV R0, 0x0019
CALL main
● rutinaA está ensamblada a partir de la celda 0x010B
● main está ensamblada a partir de la celda 0x020B
● el programa es ensamblado a partir de la celda 0x030B
● PC=0x030B
● la pila está vacía
main:
0010 100 001 100 000 0x020B 2860
1011 000000 000000 0x020C B000
0000 0001 0000 1011 0x020D 010B
1100 000000 000000 0x020E C000
rutinaA
0111 100 001 000000 0x010B 7840
0000 0000 0000 0010 0x010C 0002
1100 000000 000000 0x010D C000
programa:
0001 100 001 000000 0x030B 1840
0001 0000 1010 1100 0x030C 10AC
0001 100 000 000000 0x030D 1800
0000 0000 0001 1001 0x030E 0019
1011 000000 000000 0x030F C000
0000 0010 0000 1011 0x0301 020B
0x010B 7840 0x010D DIV Registro Inmedia R1 0x002 {0x0302, FFED 0x010D
0002 to 0x020E}
4) cache
MOV R7, 0x0001
ciclo: CMP R7, 0x0000
JE FIN
MUL R5, [0xABCD]
SUB R7, 0x0001
JMP ciclo
FIN: RET
0XF0CC F0 C C F
0XF0CD F0 C D A
0XF0CE F0 C E A
0XF0CF F0 C F A
0XF0C0 F0 C 0 A
0XF0C1 F0 C 1 A
0XF0C2 F0 C 2 A
0XF0C3 F0 C 3 A
0XF0C4 F0 C 4 A
0XF0C5 F0 C 5 A
0XF0C6 F0 C E A
0XF0CE F0 C E A
0XF0CF F0 C F A
0XF0C0 F0 C 0 A
0XF0C7 F0 C 7 A
5)
escribir una rutina superPar a partir de su documentación
REQUIERE una cadena a analizar en R0
MODIFICA ??
RETORNA un “1” en R1 si en la cadena en R0 los bits de sus posiciones pares estan en 0
retorna un 0 en caso contrario
6)
Dado un arreglo que comienza en la celda 7A71 y que termina con un elemento de valor
FFFF, escribir una rutina que retorne en R1, la cantidad de elementos del arreglo son para
superPar