📘Cómo usar este formulario
Recoge todas las fórmulas de los apuntes del Tema 2, con la misma notación que usa el libro. De cada una se indica qué significa cada variable, cuándo se usa y un ejemplo numérico de los apuntes o de los ejercicios.
0. Conversiones de unidades
| Prefijo binario | Valor | Prefijo decimal | Valor |
|---|
| 1 Ki | 210=1024 | 1 k | 103 |
| 1 Mi | 220 | 1 M | 106 |
| 1 Gi | 230 | 1 G | 109 |
| 1 Ti | 240 | 1 T | 1012 |
| Tiempo y frecuencia | Bits y bytes |
|---|
| 1 ms =10−3 s, 1 µs =10−6 s, 1 ns =10−9 s | 1 B = 8 bits |
| f=1/T | b = bit, B = byte (Mib frente a MiB) |
| 1 MT/s =106 transferencias/s | En chips, "M" tradicional significa 220 |
Truco: 1 B/1 ns=109 B/s =1000 MB/s. Por ejemplo, 8 B cada 40 ns son 200 MB/s.
1. Conceptos básicos (2.2)
1.1 Bits de dirección
n=⌈log2N⌉(n=log2N si N=2n)
| Variable | Significado |
|---|
| N | Número de unidades direccionables |
| n | Bits mínimos de dirección física |
| ⌈x⌉ | Menor entero mayor o igual que x |
Ejemplo: N=256: n=8, direcciones de 00000000 a 11111111. N=3000: n=12 porque 211=2048<3000≤4096.
1.2 Direcciones sin usar
combinaciones sin usar=2n−N(direcciones de N a 2n−1)
Ejemplo: N=3000, n=12: sobran 4096−3000=1096 (0xBB8 a 0xFFF).
1.3 Capacidad
C=N⋅L bitsC=2n⋅L (si N=2n)C=N bytes (si L=8)
| Variable | Significado |
|---|
| C | Capacidad |
| L | Longitud de la unidad direccionable (bits) |
Ejemplo: 1024×8 bits =8192 bits =1024 B =1.024 kB =1 KiB.
1.4 Palabras
LLp (unidades por palabra)Np=⌊LpC⌋sobrante=C−NpLp
| Variable | Significado |
|---|
| Lp | Longitud de palabra del procesador (bits) |
| Np | Palabras completas que caben |
| ⌊x⌋ | Mayor entero menor o igual que x |
Ejemplo: C=80 bits, Lp=32: Np=2, sobran 16 bits. Memoria de 64 KiB por bytes y Lp=32: 4 unidades por palabra y Np=16384.
1.5 Unidad de transferencia
LLT (unidades por transferencia)ancho del busLT (transferencias del bus por acceso)
Ejemplo: LT=64 bits por bytes: 8 unidades. Con bus de 32 bits, 2 transferencias; con bus de 64, una.
2. Rendimiento de las memorias (2.3.2)
2.1 Tiempos
tc≥taespera tras el dato=tc−tainicio del acceso k=(k−1)tc
| Variable | Significado |
|---|
| ta | Tiempo de acceso: del inicio de la operación a su final (dato disponible) |
| tc | Tiempo de ciclo: mínimo entre el inicio de dos accesos consecutivos |
Ejemplo: ta=60, tc=100 ns: 40 ns de espera; el acceso 100 empieza a los 99⋅100=9.9 µs.
2.2 Frecuencia máxima de acceso
fmax=tc1
Uso: accesos sin solapamiento. Depende de tc, no de ta.
Ejemplo: tc=200 ns: 5⋅106 accesos/s.
2.3 Velocidad de transferencia
vT=TNvT,max=LT⋅fmax=tcLT
| Variable | Significado |
|---|
| N | Información transferida en el intervalo T |
| vT | Velocidad (efectiva si N es información útil realmente transferida) |
| vT,max | Máxima teórica, con un LT por acceso y sin solapamiento |
Ejemplo: LT=8 B, tc=20 ns: vT,max=400 MB/s. 800 KiB en 5 ms: vT=163.84 MB/s.
2.4 Límite del bus
vmemoria-procesador≤min(vT,max, BWbus)
Ejemplo: memoria de 800 MB/s con bus de 400 MB/s: como máximo 400 MB/s.
2.5 Tiempo de ciclo para una velocidad objetivo
tc≤vobjetivoLT
Ejemplo: LT=4 B y 100 MB/s: tc≤40 ns.
3. Memorias de semiconductores (2.5)
3.1 Densidad de almacenamiento
D=superficieC(bit/mm2, Mibit/mm2)
Ejemplo: SRAM 16 Mib/80 mm² =0.2; DRAM 128 Mib/160 mm² =0.8 (4 veces más densa).
3.2 Bits por celda flash
estados de carga=2k
| k (bits por celda) | Tecnología | Estados |
|---|
| 1 | SLC | 2 |
| 2 | MLC | 4 |
| 3 | TLC | 8 |
| 4 | QLC | 16 |
4. Circuitos integrados y ampliación (2.6.1 y 2.6.2)
4.1 Terminales de un chip 2n×L
direccioˊn: ndatos: Ldireccioˊn multiplexada en dos partes iguales: 2n
Ejemplo: DRAM 222×4: 22 terminales de dirección sin multiplexar, 11 con multiplexado (A0 a A10), 4 de datos.
4.2 Caso 1: más bits por unidad direccionable (N=N0, L>L0)
r=⌈C0C⌉=⌈L0L⌉L=r⋅L0 (si L es muˊltiplo de L0)
| Variable | Significado |
|---|
| C0=N0×L0 | Capacidad base de cada chip |
| C=N×L | Memoria que se quiere construir |
| r | Chips en paralelo |
Ejemplo 2.8: 210×32 con chips 210×8: r=4; 10 líneas de dirección y 32 de datos.
4.3 Caso 2: más unidades direccionables (L=L0, N>N0)
q=⌈C0C⌉=⌈N0N⌉p=n−n0decodificador de p entradas y 2p salidas
| Variable | Significado |
|---|
| q | Número de chips |
| n0=log2N0 | Bits bajos: dirección dentro del chip (a todos en paralelo) |
| p=n−n0 | Bits altos: entradas del decodificador (eligen el chip) |
Ejemplo 2.9: 212×8 con chips 210×8: q=4; A9..A0 internos; A11A10 a un decodificador 2 a 4.
4.4 Chip y dirección interna (caso 2)
chip=⌊N0Dir⌋direccioˊn interna=DirmodN0
Ejemplo: 5A3C16 con N0=212=100016: chip 5, dirección interna A3C.
4.5 Caso 3: ambas magnitudes
r=⌈L0L⌉q=⌈N0N⌉NCI=q⋅r
Ejemplo 2.10: 212×2 con chips 210×1: r=2, q=4, NCI=8.
4.6 Organización entrelazada (ejercicio 2.18)
chip=Dirmodqdireccioˊn interna=⌊qDir⌋
Ejemplo: 4 chips: C89 va al CI 1 con dirección interna 322.
5. Módulos, DDR y canales (2.6.3)
5.1 Rangos y capacidad del módulo
chips por rango=Lchipanchura del rangoCrango=chips⋅CchipCmoˊdulo=Nrangos⋅Crango
La anchura del módulo no cambia con el número de rangos.
Ejemplo: 8 chips 210×8 forman un rango 210×64 de 8 KiB; dos rangos dan 16 KiB con 64 bits de anchura.
5.2 Tasa de transferencia y ancho de banda DDR
Tck=fck1Rt=TNtRt=2fckBW=Rt⋅A
| Variable | Significado | Unidad |
|---|
| fck | Frecuencia del reloj de la interfaz de memoria | MHz |
| Tck | Período del reloj | ns |
| Nt | Transferencias en el intervalo T | — |
| Rt | Tasa de transferencia (DDR: dos por ciclo) | MT/s |
| A | Anchura de datos del bus | bits por transferencia |
| BW | Ancho de banda teórico | bits/s (dividir entre 8 para B/s) |
Ejemplo 2.11: 3200 MT/s y 64 bits: BW=204800⋅106 bits/s =25.6 GB/s. 1600 MHz dan 3200 MT/s.
5.3 Ancho de banda efectivo y canales
BWef=η⋅BWBWagregado=Ncanales⋅BWcanal
| Variable | Significado |
|---|
| η | Fracción aprovechada (por ejemplo, 0.75) |
Ejemplo: 19.2 GB/s al 75 % son 14.4 GB/s. Dos módulos en un canal: 19.2 GB/s; en dos canales: 38.4 GB/s.
5.4 Módulos independientes con bus compartido
tc=tbus+tintNop=min(Nmod, tbustc)vT,max=tcNop⋅LT
| Variable | Significado |
|---|
| tbus | Tiempo que una operación ocupa el bus |
| tint | Tiempo interno del módulo tras liberar el bus |
| tc | Tiempo de ciclo del módulo |
| Nmod | Módulos independientes |
| Nop | Operaciones completadas por ciclo en régimen continuo (fórmula válida si tc/tbus es entero) |
Ejemplo 2.12: tc=50+200=250 ns, tc/tbus=5, 4 módulos: 4⋅8 B/250 ns=128 MB/s; con 5 módulos, 160 MB/s.
5.5 Saturación y mejora
Nmin=⌈tbustc⌉BWbus=tbusLTS(N)=BW(1)BW(N)=min(N,tbustc)
Ejemplo (ejercicio 2.19): tc=200, tbus=40: 5 módulos saturan; BWbus=200 MB/s; S(3)=3 (+200 %), S(6)=5 (+400 %).
6. Memoria caché: organización (2.7.2)
6.1 Bloques y dirección de memoria principal
NBP=⌈SBCMP⌉n=⌈log2CMP⌉f=⌈log2NBP⌉d=log2SBn=f+d
| Variable | Significado |
|---|
| CMP | Capacidad de memoria principal (en unidades direccionables) |
| SB | Tamaño de bloque (en unidades direccionables) |
| NBP | Bloques de memoria principal (j=0..NBP−1) |
| n | Bits de una dirección DirMP |
| f | Bits del campo Bloque j |
| d | Bits del campo Desplazamiento |
Ejemplo 2.13: 64 B y bloques de 8 B: NBP=8, n=6, f=3, d=3.
6.2 Bloque, desplazamiento y dirección
j=⌊SBDirMP⌋p=DirMPmodSBDirMP=j⋅SB+p
Ejemplo: dirección 9 con SB=8: j=1, p=1; 1⋅8+1=9.
6.3 Líneas de caché
NLC=SBCMCb=⌈log2NLC⌉i=0..NLC−1
| Variable | Significado |
|---|
| CMC | Capacidad de datos de la caché (sin directorio) |
| NLC | Número de líneas |
| b | Bits para numerar una línea |
Ejemplo 2.14: 16 B de caché y bloques de 8 B: NLC=2, b=1.
6.4 Capacidad del directorio
Cdir=NLC⋅(e+bits de control)Ctotal=CMC+Cdir
| Bits de control | Cuándo |
|---|
| V (validez) | Siempre |
| M (modificación) | Con escritura diferida |
Ejemplo (ejercicio 2.22): 64 líneas, e=4 y V: 64⋅5=320 bits =40 B; total 4096+40=4136 B.
7. Métodos de correspondencia (2.7.3)
7.1 Directa
i=jmodNLCb=log2NLCn=e+b+de=n−(b+d)
| Etiqueta (e) | Línea i (b) | Desplazamiento (d) |
Ejemplo 2.15: n=6, NLC=2, SB=8: e=2, b=1, d=3. Dirección 9 = 00 1 001: etiqueta 0, línea 1, p=1.
7.2 Totalmente asociativa
e=f=⌈log2NBP⌉n=e+de=n−d
| Etiqueta (e) = Bloque j | Desplazamiento (d) |
Ejemplo 2.17: n=6, d=3: e=3. Dirección 9 = 001 001: etiqueta 1 (= bloque 1).
7.3 Asociativa por conjuntos (r vías)
Q=rNLCq=jmodQc=log2Qn=e+c+de=n−(c+d)
| Etiqueta (e) | Conjunto q (c) | Desplazamiento (d) |
| Variable | Significado |
|---|
| r | Grado de asociatividad: líneas por conjunto (vías) |
| Q | Número de conjuntos (q=0..Q−1) |
| c | Bits del campo Conjunto |
Casos límite: r=1 es directa; r=NLC es totalmente asociativa.
Ejemplo 2.20: 32 B de caché, bloques de 8 B, r=2: NLC=4, Q=2, c=1, e=2. Dirección 9: conjunto 1, etiqueta 0.
7.4 Comparaciones por acceso
| Método | Comparaciones de etiqueta |
|---|
| Directa | 1 |
| Por conjuntos | r |
| Totalmente asociativa | NLC |
8. Rendimiento de la caché (2.7.6)
8.1 Tasas
NT=NA+NFh=NTNAm=NTNFh+m=1
Ejemplo (ejercicio 2.24): 2 aciertos en 8 accesos: h=0.25, m=0.75.
8.2 Tiempo medio de acceso (un nivel)
TT=NAtA+NFtFtam=NTTT=htA+(1−h)tF
tA=tctF=tc+PFtam=tc+(1−h)PF=tc+mPF
| Variable | Significado |
|---|
| tA | Tiempo de un acceso con acierto |
| tF | Tiempo de un acceso con fallo |
| tc | Tiempo de acceso a la caché (aquí tc no es el tiempo de ciclo) |
| PF | Penalización por fallo: tiempo adicional de un fallo |
| TT | Tiempo total de los NT accesos |
Ejemplo 2.22: tc=10, PF=20+100=120 ns, h=0.9: tF=130 ns y tam=22 ns.
8.3 Fallo con bloque de varias palabras (ejercicio 2.29)
tF,A=tdet+tpaltF,B=tdet+Npaltpal+tc
| Procedimiento | Funcionamiento |
|---|
| A | Se entrega primero la palabra pedida |
| B | Se carga el bloque completo y después se lee de la caché |
Ejemplo: 8 palabras de 100 ns, tdet=tc=10 ns: tF,A=110 ns, tF,B=820 ns; con h=0.9, tam=20 y 91 ns.
8.4 Dos niveles de caché
PF1=t2+m2tMtam=t1+m1(t2+m2tM)mglobal=m1m2
| Variable | Significado |
|---|
| t1, t2 | Tiempos de acceso a L1 y L2 |
| tM | Tiempo adicional de memoria principal tras fallar en L2 |
| m1 | Tasa de fallos de L1 (sobre todos los accesos) |
| m2 | Tasa local de fallos de L2 (sobre los que llegan a L2) |
| PF1 | Penalización media por fallo en L1 |
Tiempos de cada caso: acierto en L1, t1; acierto en L2, t1+t2; fallo en ambos, t1+t2+tM.
Ejemplo 2.23: t1=2, m1=0.05, t2=10, m2=0.2, tM=100: PF1=30 ns, tam=3.5 ns.
8.5 Tres niveles de caché
PF1=t2+m2(t3+m3tM)tam=t1+m1(t2+m2(t3+m3tM))
| Variable | Significado |
|---|
| t3 | Tiempo de L3 |
| m3 | Tasa local de fallos de L3 |
8.6 Proporción resuelta en cada nivel (sobre el total)
L1: h1L2: m1h2memoria principal: m1m2
Ejemplo (ejercicio 2.30): h1=0.92, h2=0.75: 92 %, 6 % y 2 %.
9. Memorias asociativas (2.8)
Mi=Vi⋅∏j(Kj+Aj⊕Wij)
| Variable | Significado | Tamaño (n entradas de m bits) |
|---|
| A | Registro argumento | m bits |
| K | Registro máscara (1 = se compara la columna) | m bits |
| V | Registro de validez (1 = entrada válida) | n bits |
| M | Registro de marca (1 = válida y coincide) | n bits |
| Wij | Bit j de la entrada i | — |
| Salida | Datos de la entrada seleccionada | m bits |
Ejemplo 2.24: argumento 10011010, máscara 10010101: patrón 1xx1x0x0; con validez 11100, marca 01100.
10. Discos duros magnéticos (2.9.2)
10.1 Geometría y capacidad
Npistas=Nsup⋅NcilNsect=Npistas⋅SC=Nsect⋅CsP=S⋅Cs
| Variable | Significado |
|---|
| Nsup | Superficies utilizables (dos por plato) |
| Ncil | Cilindros (pistas por superficie) |
| S | Sectores por pista |
| Cs | Bytes de datos por sector |
| P | Bytes de datos por pista |
Ejemplo (ejercicio 2.36): 8 superficies, 1200 cilindros, 200 sectores de 4096 B: 9600 pistas, 1 920 000 sectores, ≈7.32 GiB.
10.2 Rotación y latencia
f=60nTrev=n60=f1tr=2Trev=n30=2f1
| Variable | Significado |
|---|
| n | Velocidad de giro en rpm (aquí n no es bits de dirección) |
| f | Revoluciones por segundo |
| Trev | Tiempo de una vuelta (s) |
| tr | Latencia rotacional media: media vuelta |
Ejemplo: 7200 rpm: f=120, Trev=8.33 ms, tr=4.17 ms. 5400 rpm: tr=5.56 ms.
10.3 Tiempo de transferencia
tt=vTNvT=Pftt=PfN=SfNs=fRR=PN=SNs
| Variable | Significado |
|---|
| N | Bytes a transferir |
| Ns | Sectores consecutivos a transferir |
| R | Revoluciones (o fracción) que dura la transferencia |
Uso: modelo idealizado de transferencia continua dentro de una pista.
Ejemplo 2.26: 2048 sectores de 512 B y 90 rev/s: vT=94371840 B/s; una pista tarda 1/90 s ≈11.111 ms; un sector, 1/(2048⋅90) s ≈0.005425 ms.
10.4 Tiempo medio de acceso y de operación
ta=tb+trtE/S=tb+tr+tt=ta+tt
| Variable | Significado |
|---|
| tb | Tiempo medio de búsqueda |
| ta | Tiempo medio de acceso |
| tE/S | Tiempo total medio de la operación |
Ejemplo 2.25: 7200 rpm, tb=8 ms, 600 kB a 150 MB/s: ta=12.17 ms, tt=4 ms, tE/S=16.17 ms.
10.5 Secuencial frente a aleatorio
tsec=tb+Np(tr+Trev)taleat=Ns(tb+tr+tt,s)
| Variable | Significado |
|---|
| Np | Pistas que ocupa el archivo (búsqueda solo al principio; latencia en cada pista; una pista por vuelta) |
| tt,s | Transferencia de un sector |
Son los supuestos del ejemplo 2.26; cada problema puede plantear otros.
Ejemplo 2.26: 4 MiB, 4 pistas: 10+4(5.556+11.111)≈76.667 ms; aleatorio con 8192 sectores: ≈127.477 s.
10.6 LBA con emulación 512e
5124096=8 bloques loˊgicos por sectorsector=⌊8LBA⌋posicioˊn=LBAmod8
Ejemplo (ejercicio 2.39): LBA 35: sector físico 4, posición 3.
11. Unidades de estado sólido (2.9.3)
11.1 Capacidades
Cbloque=Npaˊg/bloque⋅CpaˊgCLBACpaˊg (bloques loˊgicos por paˊgina)CLBACbloque (por bloque fıˊsico)
Ejemplo 2.27: 256 páginas de 8 KiB: bloque de 2 MiB; 2 bloques lógicos de 4 KiB por página; 512 por bloque físico (equivalencia de capacidad, no correspondencia fija).
11.2 IOPS y velocidad
N=No⋅SoIOPS=TNovT=TN=IOPS⋅Sotm=IOPS1
| Variable | Significado |
|---|
| No | Operaciones de E/S realizadas |
| So | Tamaño de cada operación |
| tm | Tiempo medio por operación, solo si se hacen sucesivamente sin solapamiento |
Ejemplo 2.28: 50 000 IOPS de 4 KiB: 200 000 KiB/s =195.31 MiB/s; tm=20 µs.
11.3 Comparaciones HDD frente a SSD
tresp,SSDta,HDDTSSDTHDD=vHDDvSSD
Ejemplo 2.29 y 2.30: 15.5556/0.1≈155.6; 12 GB: 60 s frente a 4 s, 15 veces.
12. Discos ópticos (2.9.4)
vT=k⋅v1×N=vT⋅TT=vTN
| Formato | v1× | Láser | Capacidad (1 cara, 1 capa) |
|---|
| CD | 150 kB/s | 780 nm | 650–700 MB |
| DVD | 1.385 MB/s | 650 nm | 4.7 GB (8.5 GB con 2 capas) |
| Blu-ray | 4.5 MB/s | 405 nm | 25 GB (50 GB con 2 capas) |
| Variable | Significado |
|---|
| k | Factor de velocidad (8x significa k=8) |
| v1× | Velocidad de referencia del formato |
Ejemplo 2.31: DVD 8x: 11.08 MB/s; 221.6 MB en 20 s; 2 GB en 180.51 s.
13. Cintas magnéticas (2.9.5)
T=vTNTtotal=Tloc+TNcartuchos=⌈capacidad por cartuchovolumen⌉
| Variable | Significado |
|---|
| Tloc | Tiempo de localización del comienzo de los datos |
Ejemplo 2.32: 120 GB a 400 MB/s con 50 s de localización: T=300 s y Ttotal=350 s.
Tabla resumen rápida
| Concepto | Fórmula |
|---|
| Bits de dirección | n=⌈log2N⌉ |
| Capacidad | C=N⋅L |
| Palabras completas | Np=⌊C/Lp⌋ |
| Frecuencia máxima | fmax=1/tc |
| Velocidad máxima teórica | vT,max=LT/tc |
| Velocidad | vT=N/T |
| Ampliación | r=⌈L/L0⌉, q=⌈N/N0⌉, NCI=qr |
| DDR | Rt=2fck, BW=Rt⋅A |
| Módulos independientes | tc=tbus+tint, v=min(Nmod,tc/tbus)⋅LT/tc |
| Bloques y líneas | NBP=⌈CMP/SB⌉, NLC=CMC/SB |
| Campos generales | n=f+d, d=log2SB |
| Directa | i=jmodNLC, e=n−(b+d) |
| Totalmente asociativa | e=n−d |
| Por conjuntos | Q=NLC/r, q=jmodQ, e=n−(c+d) |
| Tasas | h=NA/NT, m=1−h |
| AMAT un nivel | tam=tc+mPF |
| AMAT dos niveles | tam=t1+m1(t2+m2tM) |
| AMAT tres niveles | tam=t1+m1(t2+m2(t3+m3tM)) |
| Memoria asociativa | Mi=Vi∏j(Kj+Aj⊕Wij) |
| HDD rotación | Trev=60/n, tr=30/n |
| HDD transferencia | tt=N/vT=Ns/(Sf)=R/f |
| HDD total | tE/S=tb+tr+tt |
| SSD | vT=IOPS⋅So |
| Ópticos | vT=k⋅v1× |
| Cinta | Ttotal=Tloc+N/vT |