Documentos de Académico
Documentos de Profesional
Documentos de Cultura
pgarc
Universidad de Alcalá
Junio de 2021
2 Tema 2 - Codificación
6 Tema 6 - Memorias
7 Tema 7 - Entrada/Salida
Complejidades sublineales
Lineal O(n)
Logarı́tmica O(log n)
√
Radical O( n)
Complejidades supralineales
N logarı́tmica O(n log n)
Polinómica O(n2 )
Exponencial O(2n )
Transistores
Existen dos grandes tipos, los BJT y los MOSFET, los BJT son más
rápidos, pero los MOSFET ocupan menos espacio. Hoy en dı́a las puertas
lógicas se construyen con BJT, que dan lugar a RTL, DTL, ECL (la más
rápida, 0,5 ns retardo), y TTL. Todas están hechas a base de transistores
y resistencias. Los MOSFET dan lugar a las NMOS y CMOS, destacando
la CMOS, ya que no usa resistencias, y por tanto solo gasta energı́a
cuando conmuta.
Pablo Garcı́a Garcı́a Estructura y Organización de Computadores 7 / 139
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-5125782
Tema 1 - Introducción, historia y rendimiento
Tiempos y ciclos
t = ciclos · τ
R ∝ t1p
procesoscompletados
Productividad = tiempo
Los ciclos pueden ser activos o inactivos. Hay varios tiempos:
Tiempo de CPU: tiempo real de ejecución. ciclosCPU · τ
Tiempo de usuario: por ejemplo, tiempo que tarda un usuario en
introducir un dato solicitado.
Tiempo de sistema: tiempo S.O. dando servicio al proceso.
ciclossys · τ
Tiempo de pared: tiempo desde que se ejecuta hasta que se
devuelve un resultado. tw = tCPU + tsys + tespera
Donde ciclosi = ciclosactivos + ciclosinacticos
MIPS
Cada CPI de un MIPS diferente
instrucciones ciclos −6 f · 10−6
MIPS = · · 10 =
ciclo s CPI
Mejoras
Ley de Amdahl: la mejora obtenida en el rendimiento de un sistema
debido a la alteración de uno de sus componentes está limitada por la
fracción de tiempo que se utiliza dicho componente.
am : factor de mejora
fm : fracción de tiempo
fm
Tmejora = T mejora · (1 − fm ) +
am
Mejoras
Speed-Up
Si S > 1: ha mejorado
Si S < 1: ha empeorado
Si S = 1: indiferente, no ha cambiado
91 ÷ 2 → C = 45; R = 1
45 ÷ 2 → C = 22; R = 1
22 ÷ 2 → C = 11; R = 0
11 ÷ 2 → C = 5; R = 1
5 ÷ 2 → C = 2; R = 1
2 ÷ 2 → C = 1; R = 0
1 ÷ 2 → C = 0; R = 1
0,216 · 2 = 0,432 → 0
0,432 · 2 = 0,864 → 0
0,864 · 2 = 1,728 → 1
0,728 · 2 = 1,456 → 1
0,14310 = 0,000112
9610 = 011000002
9610 = 011000002
9610 = 011000002
Exceso a 2n−1
El sistema exceso a 2n−1 funciona de la siguiente manera. Si
tenemos un número n y lo queremos representar con b bits en
exceso a 2n−1 , primero hallamos su valor en complemento a 2
sobre b bits, y después MSB
Rango EX 2n−1 : [−2n−1 , 2n−1 − 1]
−9610 = 001000002
−57,86410 = 1000110,0012
AND(x, y , n) = Xi AND Yi = ri
Con coste A(n) = O(n) y retardo R(n) = O(cte)
Operadores de bit
Detectores
Cero
1 si Xi = 0 ∀ i ∈ [0, n − 1]
CERO(x, n) =
0 si Xi = 1 ∃ i ∈ [0, n − 1]
Operadores de bit
Detectores
Paridad
Signo
Este depende del sistema de representación en el que estemos
trabajando, por ejemplo, en C2:
n > 0 si Xn−1 = 0
SIGNO − C2(n) =
n < 0 si Xn−1 = 1
Operadores de signo
Conmutación
Complemento a 2: consiste en complementar bit a bit y sumar 1
Xi + 1
NEG − C2(x, n) =
Oflow si dn−1 = 1 ∧ di = 0 ∀ i ∈ [0, n − 2]
C2 ↔ EX 2n−1 → MSB
Nunca se produce overflow. La implementación es la misma que la
de conmutación de SM de la anterior diapositiva.
SM ↔ C2
n−1
2 + NEG − C2 si n<0
igual si n>0
overflow si Xn−1 = 1 ∧ Xi = 0 ∀ i ∈ [0, n − 2] C2
Suma binaria
Dados los números X e Y :
X → Xn−1 Xn−2 . . . X1 X0
Y → Yn−1 Yn−2 . . . Y1 Y0
Su suma es:
n−1
X
S= (Xi + Yi ) · 2i
i=0
X Y s c
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Suma binaria
Con este último método de suma, se pueden construir
sumadores-restadores aprovechando la propiedad X − Y = X + (−Y ),
pudiendo expresar −Y en diferentes sistemas. Recordemos que estamos
dando una suma o resta en binario puro, luego este serı́a el
Sumador-Restador (BIN − C2)
Suma binaria
Entonces, también podemos constriur el Sumador-Restador (BIN − C1).
Es importante recordar que además de las ecuaciones de overflow que
estamos indicando, podemos darnos cuenta de que está habiendo si
sumamos dos positivos y sale negativo, sumamos dos negativos y sale
positivo, etc...
Suma binaria
El Sumador-Restador (BIN − EX 2n−1 ). Es exactamente igual al de C2,
es más, el resultado se devuelve directamente en C2 a pesar de haber
dado los datos en EX 2n−1 , por lo que con MSB lo devolvemos a
EX 2n−1 .
Podemos ver que si hacemos (2n−1 + X ) + (2n−1 + Y ) = 2n + X + Y , se
genera un acarreo de 2n . Si restamos, (2n−1 + X ) − (2n−1 + Y ) = X − Y ,
vemos que no existe acerreo al restar.
Comparadores
Sin signo: destaca el comparador de 1 bit
Con signo: se basa en hacer la resta en complemento a 2, y con
diferentes indicios del resultado se pueden construir sus ecuaciones
lógicas, destacando:
Anticipación de acarreo
Generación: en la etapa i se genera acarreo o no.
gi = Xi · Yi
pi = Xi ⊕ Yi
Si = pi ⊕ Ci−1
Ci = gi + pi · Ci−1
Esto da lugar a sumadores CLA
A = 1810 = 0100102
B = 410 = 0001002
A · B = A · (−22 + 23 ) = −A · 22 + A · 23
−A = NEG − C2(A, 6) = 101110
−A · 22 = 111110111000
A · 23 = 000010010000
S = 000001001000 = 23 + 26 = 8 + 64 = 7210 = 18 · 4
R ∗ = 001001000100
−A = NEG − C2(A, 6) = 110110
−A · 26 = 110110000000
S = R ∗ + (−A · 26 ) = 111111000100
B = 111010 = −21 + 22 − 23
A · B = A · (−21 + 22 − 23 ) = −2A + 22 A − 23 A
−A = NEG − C2(A, 6) = 110110
−2A + 22 A − 23 A = 111111101100 + 000000101000 + 111110110000 =
= 111111000100 = −6010
Computadores OISC
Es entonces cuando aparecen los computadores OISC (one-instruction
set computer ), ordenadores de una sola instrucción que hacı́an:
Suma y saltar si ≤ 0
Incrementar y saltar si = V
Restar y saltar si n < 0
Se suele decir que la de registros es la mejor ya que no accede a memoria, pero esos datos de los registros han de
salir de memoria, entonces, ¿por qué es mejor?. Porque el programador y el compilador van a intentar mantener las
variables en los registros el mayor tiempo posible optimizando los compiladores.
¿Cómo se codifica?
Criterios para diseñar repertorios
Regularidad (ortogonalidad)
Minimizar la representación
Reducir el número de palabras accedidas a memoria
Favorecer el tiempo de vida del repertorio
n
X
L(1) < L(2) < L(3) < . . . < L(n) → L(i) · P(i) = tam
i=1
Trep = n · fp + (n + m) · (1 − fp )
RISC o CISC
Hay máquinas RISC, que tienen un repertorio reducido (registro-registro,
instrucciones de proceso en 1 ciclo, y optimizan el compilador); y
máquinas CISC, que son las que tienen un repertorio grande.
Hoy en dı́a utilizamos muchas instrucciones, por lo que habları́amos de
CISC, pero lo que se hace el traducir el CISC a RISC para que todo sea
mejor.
Algunos estudios
Tipos de estudios
Hay estudios estáticos, que son aquellos que se realizan leyendo el
archivo ejecutable (.exe) ; y estudios dinámicos que se realizan en
tiempo de ejecución, siendo estos últimos los más comunes.
Subrutinas
El número medio de variables locales tı́picas coincide con el de
argumentos tı́picos, siendo 3. Y también coinciden la media de
argumentos máximos con las variables locales máximas siendo 6.
Algunos estudios
Porcentaje de uso de tipos de operaciones
Tamaño
s(implı́cito) = 0; s(explı́cito) = 1
Microprogramación - Compresión
En una máquina, en un instante, solo puede estar activo un
buffer-triestado, entonces si tenemos n b-t, tenemos n + 1 combinaciones
diferentes de estados de los buffer, n (se activa el n-ésimo), +1 no hay
ninguno activo.
Tendremos entonces un código tal que 0000 . . . 010 . . . 00, que podemos
comprimir. Se suele hablar de dos formas de programación:
Microprogramación vertical: se codifica y comprime en un factor
c ∈ (0, 1]
Microprogramación horizontal: nada cambia, todo se queda
igual. c = 1
Nanoprogramación
Consiste en dividir la programación en dos niveles. En el primero de
ellos, supongamos que tenemos secuenciamiento explı́cito. Lo que vamos
a hacer es sustituir las palabras de control por punteros a un
segundo nivel, que es un repositorio donde se almacenan todas estas.
Deben cumplirse estas condiciones:
Hay cierta reutilización de las palabras de control, y solo algunas pocas
de las palabras de control tienen significado real.
v = ⌈ρ · k⌉
Donde ρ es la tasa de palabras diferentes
El número de celdas que se necesitan para trabajar con dos niveles es:
Principio de localidad
El principio de localidad enuncia que no todo el mapa de memoria
es equiprobable, el proceso favorece ciertas posiciones de memoria.
Localidad temporal: si referencio una posición de memoria, pronto
volveré a hacerlo. Por ejemplo, si estoy ejecutando un bucle while,
en las sucesivas iteraciones estoy pasando por las mismas posiciones
de memoria leyendo las instrucciones que hay dentro de este.
Localidad espacial: si referencio x, referenciaré x + 1, x + 2 . . ..
Por ejemplo, cuando se iteran todos los elementos de un array con
un bucle for, ya que cada elemento está ”al lado” del otro.
Aciertos y fallos
Cuando la caché pide datos a la memoria principal se puede producir
hit o miss, de forma que el tiempo medio de acceso se calcula como
tm = ta + (1 − h) · p
Un ordenador dispone de una caché con un ta = 20ns por palabra, y una memoria principal con un ta = 100ns por
palabra. Se usa la polı́tica de escritura directa. Mediante programas de prueba se observa que el 53 % de las
referencias a memoria son de instrucciones y de las que son a datos, 8 de lectura y 2 de escritura. La tasa de
aciertos es del 98 %, ¿cuánto tiempo se tarda en acceder a memoria?
Sabemos que el tiempo medio es ta = P(L) · tl + P(E ) · te , entonces primero calcularemos las probabilidades. La
probabilidad de leer es que lea una instrucción más la de que referencie un dato y lo lea:
Y la probabilidad de escribir es la de estar trabajando con datos y tener que escribir uno:
El tiempo de escritura es te = 100 · 10−9 porque nos lo dice la escritura directa (escribe a la velocidad de la más
lenta), y la de lectura se calcula con:
−9 −9 −9
tm = tn1 + (1 − h) · tn2 ; tl = 20 · 10 + (1 − 0,98) · 100 · 10 = 22 · 10
−9 −9 −9
ta = (0,53 + 0,47 · 0,8) · (22 · 10 ) + (0,47 · 0,2) · 100 · 10 = 29,332 · 10 s
Tamaños
tamañoprincipal
B=
tamañobloque
tamañocaché
N=
tamañobloque
Totalmente asociativa
Es una de las formas de remediar los inconvenientes de la
correspondencia directa. Consiste en dejar libertad a la memoria
principal en asociarse a las lı́neas de caché que convengan en cada
momento. La etiqueta también se subdivide en etiqueta y palabra.
−Como puede estar en cualquiera no sabemos dónde está, hay que
hacer una búsqueda
longitudetiqueta = log2 (B)
longitudpalabra = log2 (longitudB )
tamañomatrizbúsqueda = N · longitudetiqueta
tamañomatrizdatos = N · log2 (N)
tamañototal = N · (log2 B + log2 N)
tamañomatrizbúsqueda/conjunto = V · longitudetiqueta
tamañomatrizdatos/conjunto = V · log2 (V )
B ·V
tamañototal = V · C · log2 + log2 (V )
N
El esquema es el siguiente:
Algoritmos de reemplazo
Cuando el procesador solicita a caché un dato y no está en caché y lo
tiene que traer de principal, mira a ver si tiene espacio, y en caso de que
esté llena se necesita sacar algo de caché para que pueda entrar este
nuevo, pero ¿cuál sacamos?
Aleatorio: no recomendable, es muy costoso.
FIFO (First Input First Output): el primero que entró sale. Necesita
un contador.
LRU (Less Recent Used): el menos reciente usado. Necesita un
contador. Es el mejor.
Un estudio de Hennesy-Patterson afirma que si la caché > 256 KB, el
método de reemplazo da igual, sin embargo, si es pequeña el mejor es el
LRU.
Polı́ticas de escritura
Escritura directa: escribe en caché y en principal. Asegura siempre
la coherencia.
−Aumenta el tráfico de memoria
−Trabaja a la velocidad de la más lenta (principal)
Postescritura: escribe en caché siempre, excepto en principal
cuando hay reemplazo, que lo indica el dirty-bit
+Menor tráfico de memoria
+Trabaja a la velocidad de la más rápida
−Aumenta la penalización
Si hay fallo en escritura, en caso de estar usando postescritura se ubica
en escritura, y si estábamos con escritura directa no.
Módulo E/S
Sus funciones son:
1 Asignar el mapa de memoria de E/S a cada periférico
Mapas de memoria disjuntos (Intel): no se sabe si es
de memoria o de E/S, se soluciona con la señal IO/M
E/S mapeada en memoria (Motorola): en el mapa de
memoria hay un rango de posiciones que son de E/S
Mapa E/S doble: el dispositivo que accedo en cada
puerto depende del tipo de acceso, la secuencia, cómo
esté programado...
2 Implementar la sincronización
Conviene poner al final a los más avariciosos para que los que lo son
menos también puedan solicitar.
Ráfaga - DMA
Solo se atiende a la E/S, se detiene la tarea principal.
Transparente - DMA
Igual que en robo de ciclo pero mientras se produce la E/S, se
ejecutan instrucciones de la tarea principal que no afecten a los buses
(además de las que se producen en los tiempos de ejecución de principal),
normalmente las instrucciones que no son de carga-almacenamiento
jt k
trans
r =n· 1+ ·p
CPI
Donde
θ
tretardorotacional =
ω
b
ttransferencia =
Vt
Se considera que en el peor de los casos θ = 0,5, es decir, que el dato
esté en el lado opuesto del plato.
Desfragmentación: juntar los sectores que contienen un mismo archivo.
δ(q, r ) → (p, w , d)
Tiempo
t = ciclos · τ
Productividad
procesoscompletados
p=
tiempo
Tiempo de pared (tw )
tp = rp · CPIp · τ
MIPS
−6
instrucciones ciclos f · 10
MIPS = · · 10−6 =
ciclo segundo CPI
Ley de Amdahl para el Speed-Up
1
S= fm
(1 − fm ) + am
E = ⌊log2 |n|⌋ + ε
Generación de acarreo
gi = Xi · Yi
Propagación de acarreo
pi = Xi ⊕ Yi
v = ⌈ρ · k⌉
datos = B
Tiempo de ciclo
tciclo = tacceso + trestauraci ón
Accesos por segundo
△t
Accesos =
tc
ta = P(L) · tl + P(E ) · te
Tiempo de interrupción
Vt = A · B · b · f
Relación BIN − C2
BIN (Z , n) si Z ≥0
C2(Z , n) = C2(Z , n) = BIN (2n +Z , n)
BIN (2n − |Z |, n) si Z <0
Relación BIN − C1
BIN (Z , n) si Z ≥0
C1(Z , n) =
BIN (2n − 1 − |Z |, n) si Z <0
Relación SM−decimal
n−2
X
VAL − SM(Z , n) = (−1)dn−1 · d i · 2i
i=0
Relación C1−decimal
n−2
X
VAL − C1(Z , n) = di · 2i − dn−1 · 2n−1 + dn−1
i=0
Relación C2−decimal
n−2
X
VAL − C2(Z , n) = di · 2i − dn−1 · 2n−1
i=0