Saltar al contenido principal
Tema 2: Unidad de memoria. Formulario
Volver a FUNDAMENTOS DE COMPUTADORES (INGENIERÍA EN IA)
FUNDAMENTOS DE COMPUTADORES (INGENIERÍA EN IA)19 min de lectura

Tema 2: Unidad de memoria. Formulario

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 binarioValorPrefijo decimalValor
1 Ki210=10242^{10} = 10241 k10310^3
1 Mi2202^{20}1 M10610^6
1 Gi2302^{30}1 G10910^9
1 Ti2402^{40}1 T101210^{12}
Tiempo y frecuenciaBits y bytes
1 ms =10−3= 10^{-3} s, 1 µs =10−6= 10^{-6} s, 1 ns =10−9= 10^{-9} s1 B = 8 bits
f=1/Tf = 1/Tb = bit, B = byte (Mib frente a MiB)
1 MT/s =106= 10^6 transferencias/sEn chips, "M" tradicional significa 2202^{20}

Truco: 1 B/1 ns=1091\text{ B}/1\text{ ns} = 10^9 B/s =1000= 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=⌈log⁡2N⌉(n=log⁡2N si N=2n)n = \lceil \log_2 N \rceil \qquad (n = \log_2 N \text{ si } N = 2^n)

VariableSignificado
NNNúmero de unidades direccionables
nnBits mínimos de dirección física
⌈x⌉\lceil x \rceilMenor entero mayor o igual que xx

Ejemplo: N=256N = 256: n=8n = 8, direcciones de 00000000 a 11111111. N=3000N = 3000: n=12n = 12 porque 211=2048<3000≤40962^{11} = 2048 < 3000 \leq 4096.

1.2 Direcciones sin usar

combinaciones sin usar=2n−N(direcciones de N a 2n−1)\text{combinaciones sin usar} = 2^n - N \qquad (\text{direcciones de } N \text{ a } 2^n - 1)

Ejemplo: N=3000N = 3000, n=12n = 12: sobran 4096−3000=10964096 - 3000 = 1096 (0xBB8 a 0xFFF).

1.3 Capacidad

C=N⋅L bitsC=2n⋅L (si N=2n)C=N bytes (si L=8)C = N \cdot L \text{ bits} \qquad C = 2^n \cdot L \ (\text{si } N = 2^n) \qquad C = N \text{ bytes} \ (\text{si } L = 8)

VariableSignificado
CCCapacidad
LLLongitud de la unidad direccionable (bits)

Ejemplo: 1024×81024 \times 8 bits =8192= 8192 bits =1024= 1024 B =1.024= 1.024 kB =1= 1 KiB.

1.4 Palabras

LpL (unidades por palabra)Np=⌊CLp⌋sobrante=C−NpLp\frac{L_p}{L} \ (\text{unidades por palabra}) \qquad N_p = \left\lfloor \frac{C}{L_p} \right\rfloor \qquad \text{sobrante} = C - N_p L_p

VariableSignificado
LpL_pLongitud de palabra del procesador (bits)
NpN_pPalabras completas que caben
⌊x⌋\lfloor x \rfloorMayor entero menor o igual que xx

Ejemplo: C=80C = 80 bits, Lp=32L_p = 32: Np=2N_p = 2, sobran 16 bits. Memoria de 64 KiB por bytes y Lp=32L_p = 32: 44 unidades por palabra y Np=16 384N_p = 16\,384.

1.5 Unidad de transferencia

LTL (unidades por transferencia)LTancho del bus (transferencias del bus por acceso)\frac{L_T}{L} \ (\text{unidades por transferencia}) \qquad \frac{L_T}{\text{ancho del bus}} \ (\text{transferencias del bus por acceso})

Ejemplo: LT=64L_T = 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) tct_c \geq t_a \qquad \text{espera tras el dato} = t_c - t_a \qquad \text{inicio del acceso } k = (k - 1)\,t_c

VariableSignificado
tat_aTiempo de acceso: del inicio de la operación a su final (dato disponible)
tct_cTiempo de ciclo: mínimo entre el inicio de dos accesos consecutivos

Ejemplo: ta=60t_a = 60, tc=100t_c = 100 ns: 40 ns de espera; el acceso 100 empieza a los 99⋅100=9.999 \cdot 100 = 9.9 µs.

2.2 Frecuencia máxima de acceso

fmax⁡=1tcf_{\max} = \frac{1}{t_c}

Uso: accesos sin solapamiento. Depende de tct_c, no de tat_a. Ejemplo: tc=200t_c = 200 ns: 5⋅1065 \cdot 10^6 accesos/s.

2.3 Velocidad de transferencia

vT=NTvT,max⁡=LT⋅fmax⁡=LTtcv_T = \frac{N}{T} \qquad v_{T,\max} = L_T \cdot f_{\max} = \frac{L_T}{t_c}

VariableSignificado
NNInformación transferida en el intervalo TT
vTv_TVelocidad (efectiva si NN es información útil realmente transferida)
vT,max⁡v_{T,\max}Máxima teórica, con un LTL_T por acceso y sin solapamiento

Ejemplo: LT=8L_T = 8 B, tc=20t_c = 20 ns: vT,max⁡=400v_{T,\max} = 400 MB/s. 800 KiB en 5 ms: vT=163.84v_T = 163.84 MB/s.

2.4 Límite del bus

vmemoria-procesador≤min⁡(vT,max⁡, BWbus)v_{\text{memoria-procesador}} \leq \min\left(v_{T,\max},\ BW_{bus}\right)

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≤LTvobjetivot_c \leq \frac{L_T}{v_{\text{objetivo}}}

Ejemplo: LT=4L_T = 4 B y 100 MB/s: tc≤40t_c \leq 40 ns.


3. Memorias de semiconductores (2.5)

3.1 Densidad de almacenamiento

D=Csuperficie(bit/mm2, Mibit/mm2)D = \frac{C}{\text{superficie}} \quad (\text{bit/mm}^2,\ \text{Mibit/mm}^2)

Ejemplo: SRAM 16 Mib/80 mm² =0.2= 0.2; DRAM 128 Mib/160 mm² =0.8= 0.8 (4 veces más densa).

3.2 Bits por celda flash

estados de carga=2k\text{estados de carga} = 2^k

kk (bits por celda)TecnologíaEstados
1SLC2
2MLC4
3TLC8
4QLC16

4. Circuitos integrados y ampliación (2.6.1 y 2.6.2)

4.1 Terminales de un chip 2n×L2^n \times L

direccioˊn: ndatos: Ldireccioˊn multiplexada en dos partes iguales: n2\text{dirección: } n \qquad \text{datos: } L \qquad \text{dirección multiplexada en dos partes iguales: } \frac{n}{2}

Ejemplo: DRAM 222×42^{22} \times 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=N0N = N_0, L>L0L > L_0)

r=⌈CC0⌉=⌈LL0⌉L=r⋅L0 (si L es muˊltiplo de L0)r = \left\lceil \frac{C}{C_0} \right\rceil = \left\lceil \frac{L}{L_0} \right\rceil \qquad L = r \cdot L_0 \ (\text{si } L \text{ es múltiplo de } L_0)

VariableSignificado
C0=N0×L0C_0 = N_0 \times L_0Capacidad base de cada chip
C=N×LC = N \times LMemoria que se quiere construir
rrChips en paralelo

Ejemplo 2.8: 210×322^{10} \times 32 con chips 210×82^{10} \times 8: r=4r = 4; 10 líneas de dirección y 32 de datos.

4.3 Caso 2: más unidades direccionables (L=L0L = L_0, N>N0N > N_0)

q=⌈CC0⌉=⌈NN0⌉p=n−n0decodificador de p entradas y 2p salidasq = \left\lceil \frac{C}{C_0} \right\rceil = \left\lceil \frac{N}{N_0} \right\rceil \qquad p = n - n_0 \qquad \text{decodificador de } p \text{ entradas y } 2^p \text{ salidas}

VariableSignificado
qqNúmero de chips
n0=log⁡2N0n_0 = \log_2 N_0Bits bajos: dirección dentro del chip (a todos en paralelo)
p=n−n0p = n - n_0Bits altos: entradas del decodificador (eligen el chip)

Ejemplo 2.9: 212×82^{12} \times 8 con chips 210×82^{10} \times 8: q=4q = 4; A9..A0A_9..A_0 internos; A11A10A_{11}A_{10} a un decodificador 2 a 4.

4.4 Chip y dirección interna (caso 2)

chip=⌊DirN0⌋direccioˊn interna=Dir mod N0\text{chip} = \left\lfloor \frac{\text{Dir}}{N_0} \right\rfloor \qquad \text{dirección interna} = \text{Dir} \bmod N_0

Ejemplo: 5A3C165A3C_{16} con N0=212=100016N_0 = 2^{12} = 1000_{16}: chip 5, dirección interna A3C.

4.5 Caso 3: ambas magnitudes

r=⌈LL0⌉q=⌈NN0⌉NCI=q⋅rr = \left\lceil \frac{L}{L_0} \right\rceil \qquad q = \left\lceil \frac{N}{N_0} \right\rceil \qquad N_{CI} = q \cdot r

Ejemplo 2.10: 212×22^{12} \times 2 con chips 210×12^{10} \times 1: r=2r = 2, q=4q = 4, NCI=8N_{CI} = 8.

4.6 Organización entrelazada (ejercicio 2.18)

chip=Dir mod qdireccioˊn interna=⌊Dirq⌋\text{chip} = \text{Dir} \bmod q \qquad \text{dirección interna} = \left\lfloor \frac{\text{Dir}}{q} \right\rfloor

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=anchura del rangoLchipCrango=chips⋅CchipCmoˊdulo=Nrangos⋅Crango\text{chips por rango} = \frac{\text{anchura del rango}}{L_{chip}} \qquad C_{rango} = \text{chips} \cdot C_{chip} \qquad C_{módulo} = N_{rangos} \cdot C_{rango}

La anchura del módulo no cambia con el número de rangos. Ejemplo: 8 chips 210×82^{10} \times 8 forman un rango 210×642^{10} \times 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=1fckRt=NtTRt=2fckBW=Rt⋅AT_{ck} = \frac{1}{f_{ck}} \qquad R_t = \frac{N_t}{T} \qquad R_t = 2 f_{ck} \qquad BW = R_t \cdot A

VariableSignificadoUnidad
fckf_{ck}Frecuencia del reloj de la interfaz de memoriaMHz
TckT_{ck}Período del relojns
NtN_tTransferencias en el intervalo TT—
RtR_tTasa de transferencia (DDR: dos por ciclo)MT/s
AAAnchura de datos del busbits por transferencia
BWBWAncho de banda teóricobits/s (dividir entre 8 para B/s)

Ejemplo 2.11: 3200 MT/s y 64 bits: BW=204 800⋅106BW = 204\,800 \cdot 10^6 bits/s =25.6= 25.6 GB/s. 1600 MHz dan 3200 MT/s.

5.3 Ancho de banda efectivo y canales

BWef=η⋅BWBWagregado=Ncanales⋅BWcanalBW_{ef} = \eta \cdot BW \qquad BW_{agregado} = N_{canales} \cdot BW_{canal}

VariableSignificado
η\etaFracció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, tctbus)vT,max⁡=Nop⋅LTtct_c = t_{bus} + t_{int} \qquad N_{op} = \min\left(N_{mod},\ \frac{t_c}{t_{bus}}\right) \qquad v_{T,\max} = \frac{N_{op} \cdot L_T}{t_c}

VariableSignificado
tbust_{bus}Tiempo que una operación ocupa el bus
tintt_{int}Tiempo interno del módulo tras liberar el bus
tct_cTiempo de ciclo del módulo
NmodN_{mod}Módulos independientes
NopN_{op}Operaciones completadas por ciclo en régimen continuo (fórmula válida si tc/tbust_c/t_{bus} es entero)

Ejemplo 2.12: tc=50+200=250t_c = 50 + 200 = 250 ns, tc/tbus=5t_c/t_{bus} = 5, 4 módulos: 4⋅8 B/250 ns=1284 \cdot 8\text{ B}/250\text{ ns} = 128 MB/s; con 5 módulos, 160 MB/s.

5.5 Saturación y mejora

Nmin⁡=⌈tctbus⌉BWbus=LTtbusS(N)=BW(N)BW(1)=min⁡(N,tctbus)N_{\min} = \left\lceil \frac{t_c}{t_{bus}} \right\rceil \qquad BW_{bus} = \frac{L_T}{t_{bus}} \qquad S(N) = \frac{BW(N)}{BW(1)} = \min\left(N, \frac{t_c}{t_{bus}}\right)

Ejemplo (ejercicio 2.19): tc=200t_c = 200, tbus=40t_{bus} = 40: 5 módulos saturan; BWbus=200BW_{bus} = 200 MB/s; S(3)=3S(3) = 3 (+200 %), S(6)=5S(6) = 5 (+400 %).


6. Memoria caché: organización (2.7.2)

6.1 Bloques y dirección de memoria principal

NBP=⌈CMPSB⌉n=⌈log⁡2CMP⌉f=⌈log⁡2NBP⌉d=log⁡2SBn=f+dN_{BP} = \left\lceil \frac{C_{MP}}{S_B} \right\rceil \qquad n = \lceil \log_2 C_{MP} \rceil \qquad f = \lceil \log_2 N_{BP} \rceil \qquad d = \log_2 S_B \qquad n = f + d

VariableSignificado
CMPC_{MP}Capacidad de memoria principal (en unidades direccionables)
SBS_BTamaño de bloque (en unidades direccionables)
NBPN_{BP}Bloques de memoria principal (j=0..NBP−1j = 0..N_{BP} - 1)
nnBits de una dirección DirMP\text{Dir}_{MP}
ffBits del campo Bloque jj
ddBits del campo Desplazamiento

Ejemplo 2.13: 64 B y bloques de 8 B: NBP=8N_{BP} = 8, n=6n = 6, f=3f = 3, d=3d = 3.

6.2 Bloque, desplazamiento y dirección

j=⌊DirMPSB⌋p=DirMP mod SBDirMP=j⋅SB+pj = \left\lfloor \frac{\text{Dir}_{MP}}{S_B} \right\rfloor \qquad p = \text{Dir}_{MP} \bmod S_B \qquad \text{Dir}_{MP} = j \cdot S_B + p

Ejemplo: dirección 9 con SB=8S_B = 8: j=1j = 1, p=1p = 1; 1⋅8+1=91 \cdot 8 + 1 = 9.

6.3 Líneas de caché

NLC=CMCSBb=⌈log⁡2NLC⌉i=0..NLC−1N_{LC} = \frac{C_{MC}}{S_B} \qquad b = \lceil \log_2 N_{LC} \rceil \qquad i = 0..N_{LC} - 1

VariableSignificado
CMCC_{MC}Capacidad de datos de la caché (sin directorio)
NLCN_{LC}Número de líneas
bbBits para numerar una línea

Ejemplo 2.14: 16 B de caché y bloques de 8 B: NLC=2N_{LC} = 2, b=1b = 1.

6.4 Capacidad del directorio

Cdir=NLC⋅(e+bits de control)Ctotal=CMC+CdirC_{dir} = N_{LC} \cdot (e + \text{bits de control}) \qquad C_{total} = C_{MC} + C_{dir}

Bits de controlCuándo
VV (validez)Siempre
MM (modificación)Con escritura diferida

Ejemplo (ejercicio 2.22): 64 líneas, e=4e = 4 y VV: 64⋅5=32064 \cdot 5 = 320 bits =40= 40 B; total 4096+40=41364096 + 40 = 4136 B.


7. Métodos de correspondencia (2.7.3)

7.1 Directa

i=j mod NLCb=log⁡2NLCn=e+b+de=n−(b+d)i = j \bmod N_{LC} \qquad b = \log_2 N_{LC} \qquad n = e + b + d \qquad e = n - (b + d)

text
| Etiqueta (e) | Línea i (b) | Desplazamiento (d) |

Ejemplo 2.15: n=6n = 6, NLC=2N_{LC} = 2, SB=8S_B = 8: e=2e = 2, b=1b = 1, d=3d = 3. Dirección 9 = 00 1 001: etiqueta 0, línea 1, p=1p = 1.

7.2 Totalmente asociativa

e=f=⌈log⁡2NBP⌉n=e+de=n−de = f = \lceil \log_2 N_{BP} \rceil \qquad n = e + d \qquad e = n - d

text
| Etiqueta (e) = Bloque j | Desplazamiento (d) |

Ejemplo 2.17: n=6n = 6, d=3d = 3: e=3e = 3. Dirección 9 = 001 001: etiqueta 1 (= bloque 1).

7.3 Asociativa por conjuntos (rr vías)

Q=NLCrq=j mod Qc=log⁡2Qn=e+c+de=n−(c+d)Q = \frac{N_{LC}}{r} \qquad q = j \bmod Q \qquad c = \log_2 Q \qquad n = e + c + d \qquad e = n - (c + d)

text
| Etiqueta (e) | Conjunto q (c) | Desplazamiento (d) |
VariableSignificado
rrGrado de asociatividad: líneas por conjunto (vías)
QQNúmero de conjuntos (q=0..Q−1q = 0..Q - 1)
ccBits del campo Conjunto

Casos límite: r=1r = 1 es directa; r=NLCr = N_{LC} es totalmente asociativa. Ejemplo 2.20: 32 B de caché, bloques de 8 B, r=2r = 2: NLC=4N_{LC} = 4, Q=2Q = 2, c=1c = 1, e=2e = 2. Dirección 9: conjunto 1, etiqueta 0.

7.4 Comparaciones por acceso

MétodoComparaciones de etiqueta
Directa1
Por conjuntosrr
Totalmente asociativaNLCN_{LC}

8. Rendimiento de la caché (2.7.6)

8.1 Tasas

NT=NA+NFh=NANTm=NFNTh+m=1N_T = N_A + N_F \qquad h = \frac{N_A}{N_T} \qquad m = \frac{N_F}{N_T} \qquad h + m = 1

Ejemplo (ejercicio 2.24): 2 aciertos en 8 accesos: h=0.25h = 0.25, m=0.75m = 0.75.

8.2 Tiempo medio de acceso (un nivel)

TT=NAtA+NFtFtam=TTNT=h tA+(1−h) tFT_T = N_A t_A + N_F t_F \qquad t_{am} = \frac{T_T}{N_T} = h\,t_A + (1 - h)\,t_F

tA=tctF=tc+PFtam=tc+(1−h) PF=tc+m PFt_A = t_c \qquad t_F = t_c + P_F \qquad t_{am} = t_c + (1 - h)\,P_F = t_c + m\,P_F

VariableSignificado
tAt_ATiempo de un acceso con acierto
tFt_FTiempo de un acceso con fallo
tct_cTiempo de acceso a la caché (aquí tct_c no es el tiempo de ciclo)
PFP_FPenalización por fallo: tiempo adicional de un fallo
TTT_TTiempo total de los NTN_T accesos

Ejemplo 2.22: tc=10t_c = 10, PF=20+100=120P_F = 20 + 100 = 120 ns, h=0.9h = 0.9: tF=130t_F = 130 ns y tam=22t_{am} = 22 ns.

8.3 Fallo con bloque de varias palabras (ejercicio 2.29)

tF,A=tdet+tpaltF,B=tdet+Npal tpal+tct_{F,A} = t_{det} + t_{pal} \qquad t_{F,B} = t_{det} + N_{pal}\,t_{pal} + t_c

ProcedimientoFuncionamiento
ASe entrega primero la palabra pedida
BSe carga el bloque completo y después se lee de la caché

Ejemplo: 8 palabras de 100 ns, tdet=tc=10t_{det} = t_c = 10 ns: tF,A=110t_{F,A} = 110 ns, tF,B=820t_{F,B} = 820 ns; con h=0.9h = 0.9, tam=20t_{am} = 20 y 91 ns.

8.4 Dos niveles de caché

PF1=t2+m2 tMtam=t1+m1 (t2+m2 tM)mglobal=m1 m2P_{F1} = t_2 + m_2\,t_M \qquad t_{am} = t_1 + m_1\,(t_2 + m_2\,t_M) \qquad m_{global} = m_1\,m_2

VariableSignificado
t1t_1, t2t_2Tiempos de acceso a L1 y L2
tMt_MTiempo adicional de memoria principal tras fallar en L2
m1m_1Tasa de fallos de L1 (sobre todos los accesos)
m2m_2Tasa local de fallos de L2 (sobre los que llegan a L2)
PF1P_{F1}Penalización media por fallo en L1

Tiempos de cada caso: acierto en L1, t1t_1; acierto en L2, t1+t2t_1 + t_2; fallo en ambos, t1+t2+tMt_1 + t_2 + t_M. Ejemplo 2.23: t1=2t_1 = 2, m1=0.05m_1 = 0.05, t2=10t_2 = 10, m2=0.2m_2 = 0.2, tM=100t_M = 100: PF1=30P_{F1} = 30 ns, tam=3.5t_{am} = 3.5 ns.

8.5 Tres niveles de caché

PF1=t2+m2 (t3+m3 tM)tam=t1+m1(t2+m2 (t3+m3 tM))P_{F1} = t_2 + m_2\,(t_3 + m_3\,t_M) \qquad t_{am} = t_1 + m_1\big(t_2 + m_2\,(t_3 + m_3\,t_M)\big)

VariableSignificado
t3t_3Tiempo de L3
m3m_3Tasa local de fallos de L3

8.6 Proporción resuelta en cada nivel (sobre el total)

L1: h1L2: m1h2memoria principal: m1m2\text{L1: } h_1 \qquad \text{L2: } m_1 h_2 \qquad \text{memoria principal: } m_1 m_2

Ejemplo (ejercicio 2.30): h1=0.92h_1 = 0.92, h2=0.75h_2 = 0.75: 92 %, 6 % y 2 %.


9. Memorias asociativas (2.8)

Mi=Vi⋅∏j(Kj‾+Aj⊕Wij‾)M_i = V_i \cdot \prod_{j}\left(\overline{K_j} + \overline{A_j \oplus W_{ij}}\right)

VariableSignificadoTamaño (nn entradas de mm bits)
AARegistro argumentomm bits
KKRegistro máscara (1 = se compara la columna)mm bits
VVRegistro de validez (1 = entrada válida)nn bits
MMRegistro de marca (1 = válida y coincide)nn bits
WijW_{ij}Bit jj de la entrada ii—
SalidaDatos de la entrada seleccionadamm 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⋅CsN_{pistas} = N_{sup} \cdot N_{cil} \qquad N_{sect} = N_{pistas} \cdot S \qquad C = N_{sect} \cdot C_s \qquad P = S \cdot C_s

VariableSignificado
NsupN_{sup}Superficies utilizables (dos por plato)
NcilN_{cil}Cilindros (pistas por superficie)
SSSectores por pista
CsC_sBytes de datos por sector
PPBytes 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\approx 7.32 GiB.

10.2 Rotación y latencia

f=n60Trev=60n=1ftr=Trev2=30n=12ff = \frac{n}{60} \qquad T_{rev} = \frac{60}{n} = \frac{1}{f} \qquad t_r = \frac{T_{rev}}{2} = \frac{30}{n} = \frac{1}{2f}

VariableSignificado
nnVelocidad de giro en rpm (aquí nn no es bits de dirección)
ffRevoluciones por segundo
TrevT_{rev}Tiempo de una vuelta (s)
trt_rLatencia rotacional media: media vuelta

Ejemplo: 7200 rpm: f=120f = 120, Trev=8.33T_{rev} = 8.33 ms, tr=4.17t_r = 4.17 ms. 5400 rpm: tr=5.56t_r = 5.56 ms.

10.3 Tiempo de transferencia

tt=NvTvT=P ftt=NP f=NsS f=RfR=NP=NsSt_t = \frac{N}{v_T} \qquad v_T = P\,f \qquad t_t = \frac{N}{P\,f} = \frac{N_s}{S\,f} = \frac{R}{f} \qquad R = \frac{N}{P} = \frac{N_s}{S}

VariableSignificado
NNBytes a transferir
NsN_sSectores consecutivos a transferir
RRRevoluciones (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=94 371 840v_T = 94\,371\,840 B/s; una pista tarda 1/901/90 s ≈11.111\approx 11.111 ms; un sector, 1/(2048⋅90)1/(2048 \cdot 90) s ≈0.005425\approx 0.005425 ms.

10.4 Tiempo medio de acceso y de operación

ta=tb+trtE/S=tb+tr+tt=ta+ttt_a = t_b + t_r \qquad t_{E/S} = t_b + t_r + t_t = t_a + t_t

VariableSignificado
tbt_bTiempo medio de búsqueda
tat_aTiempo medio de acceso
tE/St_{E/S}Tiempo total medio de la operación

Ejemplo 2.25: 7200 rpm, tb=8t_b = 8 ms, 600 kB a 150 MB/s: ta=12.17t_a = 12.17 ms, tt=4t_t = 4 ms, tE/S=16.17t_{E/S} = 16.17 ms.

10.5 Secuencial frente a aleatorio

tsec=tb+Np (tr+Trev)taleat=Ns (tb+tr+tt,s)t_{sec} = t_b + N_p\,(t_r + T_{rev}) \qquad t_{aleat} = N_s\,(t_b + t_r + t_{t,s})

VariableSignificado
NpN_pPistas que ocupa el archivo (búsqueda solo al principio; latencia en cada pista; una pista por vuelta)
tt,st_{t,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.66710 + 4(5.556 + 11.111) \approx 76.667 ms; aleatorio con 8192 sectores: ≈127.477\approx 127.477 s.

10.6 LBA con emulación 512e

4096512=8 bloques loˊgicos por sectorsector=⌊LBA8⌋posicioˊn=LBA mod 8\frac{4096}{512} = 8 \text{ bloques lógicos por sector} \qquad \text{sector} = \left\lfloor \frac{LBA}{8} \right\rfloor \qquad \text{posición} = LBA \bmod 8

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ˊgCpaˊgCLBA (bloques loˊgicos por paˊgina)CbloqueCLBA (por bloque fıˊsico)C_{bloque} = N_{pág/bloque} \cdot C_{pág} \qquad \frac{C_{pág}}{C_{LBA}} \ (\text{bloques lógicos por página}) \qquad \frac{C_{bloque}}{C_{LBA}} \ (\text{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=NoTvT=NT=IOPS⋅Sotm=1IOPSN = N_o \cdot S_o \qquad IOPS = \frac{N_o}{T} \qquad v_T = \frac{N}{T} = IOPS \cdot S_o \qquad t_m = \frac{1}{IOPS}

VariableSignificado
NoN_oOperaciones de E/S realizadas
SoS_oTamaño de cada operación
tmt_mTiempo 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= 195.31 MiB/s; tm=20t_m = 20 µs.

11.3 Comparaciones HDD frente a SSD

ta,HDDtresp,SSDTHDDTSSD=vSSDvHDD\frac{t_{a,HDD}}{t_{resp,SSD}} \qquad \frac{T_{HDD}}{T_{SSD}} = \frac{v_{SSD}}{v_{HDD}}

Ejemplo 2.29 y 2.30: 15.5556/0.1≈155.615.5556/0.1 \approx 155.6; 12 GB: 60 s frente a 4 s, 15 veces.


12. Discos ópticos (2.9.4)

vT=k⋅v1×N=vT⋅TT=NvTv_T = k \cdot v_{1\times} \qquad N = v_T \cdot T \qquad T = \frac{N}{v_T}

Formatov1×v_{1\times}LáserCapacidad (1 cara, 1 capa)
CD150 kB/s780 nm650–700 MB
DVD1.385 MB/s650 nm4.7 GB (8.5 GB con 2 capas)
Blu-ray4.5 MB/s405 nm25 GB (50 GB con 2 capas)
VariableSignificado
kkFactor de velocidad (8x significa k=8k = 8)
v1×v_{1\times}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=NvTTtotal=Tloc+TNcartuchos=⌈volumencapacidad por cartucho⌉T = \frac{N}{v_T} \qquad T_{total} = T_{loc} + T \qquad N_{cartuchos} = \left\lceil \frac{\text{volumen}}{\text{capacidad por cartucho}} \right\rceil

VariableSignificado
TlocT_{loc}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=300T = 300 s y Ttotal=350T_{total} = 350 s.


Tabla resumen rápida

ConceptoFórmula
Bits de direcciónn=⌈log⁡2N⌉n = \lceil \log_2 N \rceil
CapacidadC=N⋅LC = N \cdot L
Palabras completasNp=⌊C/Lp⌋N_p = \lfloor C/L_p \rfloor
Frecuencia máximafmax⁡=1/tcf_{\max} = 1/t_c
Velocidad máxima teóricavT,max⁡=LT/tcv_{T,\max} = L_T/t_c
VelocidadvT=N/Tv_T = N/T
Ampliaciónr=⌈L/L0⌉r = \lceil L/L_0 \rceil, q=⌈N/N0⌉q = \lceil N/N_0 \rceil, NCI=qrN_{CI} = q r
DDRRt=2fckR_t = 2 f_{ck}, BW=Rt⋅ABW = R_t \cdot A
Módulos independientestc=tbus+tintt_c = t_{bus} + t_{int}, v=min⁡(Nmod,tc/tbus)⋅LT/tcv = \min(N_{mod}, t_c/t_{bus}) \cdot L_T/t_c
Bloques y líneasNBP=⌈CMP/SB⌉N_{BP} = \lceil C_{MP}/S_B \rceil, NLC=CMC/SBN_{LC} = C_{MC}/S_B
Campos generalesn=f+dn = f + d, d=log⁡2SBd = \log_2 S_B
Directai=j mod NLCi = j \bmod N_{LC}, e=n−(b+d)e = n - (b + d)
Totalmente asociativae=n−de = n - d
Por conjuntosQ=NLC/rQ = N_{LC}/r, q=j mod Qq = j \bmod Q, e=n−(c+d)e = n - (c + d)
Tasash=NA/NTh = N_A/N_T, m=1−hm = 1 - h
AMAT un niveltam=tc+mPFt_{am} = t_c + m P_F
AMAT dos nivelestam=t1+m1(t2+m2tM)t_{am} = t_1 + m_1(t_2 + m_2 t_M)
AMAT tres nivelestam=t1+m1(t2+m2(t3+m3tM))t_{am} = t_1 + m_1(t_2 + m_2(t_3 + m_3 t_M))
Memoria asociativaMi=Vi∏j(Kj‾+Aj⊕Wij‾)M_i = V_i \prod_j (\overline{K_j} + \overline{A_j \oplus W_{ij}})
HDD rotaciónTrev=60/nT_{rev} = 60/n, tr=30/nt_r = 30/n
HDD transferenciatt=N/vT=Ns/(Sf)=R/ft_t = N/v_T = N_s/(S f) = R/f
HDD totaltE/S=tb+tr+ttt_{E/S} = t_b + t_r + t_t
SSDvT=IOPS⋅Sov_T = IOPS \cdot S_o
ÓpticosvT=k⋅v1×v_T = k \cdot v_{1\times}
CintaTtotal=Tloc+N/vTT_{total} = T_{loc} + N/v_T

David González Lombraña

Apuntes, laboratorio y proyectos de IA, Linux y redes.