Skip to main content
Tema 3: Unidad de Entrada/Salida. Formulario

This content is currently only available in Spanish. English translation is on the roadmap — in the meantime, here's the original.

Back to FUNDAMENTOS DE COMPUTADORES (INGENIERÍA EN IA)
FUNDAMENTOS DE COMPUTADORES (INGENIERÍA EN IA)16 min read

Tema 3: Unidad de Entrada/Salida. Formulario

Cómo usar este formulario

Cada bloque recoge la fórmula, el significado de cada variable, cuándo se usa y un ejemplo numérico de los apuntes o de los ejercicios del tema. Los resultados coinciden con las soluciones oficiales.


0. Conversiones útiles

MagnitudRelación
Período y frecuenciat=1/ft = 1/f
Tiempos1 s =103= 10^3 ms =106= 10^6 µs =109= 10^9 ns
Pasar un tiempo a ciclos de CPUciclos=t/tciclo\text{ciclos} = t / t_{ciclo}
Pasar ciclos a tiempot=ciclos⋅tciclot = \text{ciclos} \cdot t_{ciclo}
Prefijos binarios1 Ki =210= 2^{10}, 1 Mi =220= 2^{20}, 1 Gi =230= 2^{30}
Prefijos decimales1 k =103= 10^3, 1 M =106= 10^6, 1 G =109= 10^9

Ejemplo: CPU a 4 GHz: tciclo=0.25t_{ciclo} = 0.25 ns. Un bus a 1 GHz (tbus=1t_{bus} = 1 ns) dura 1/0.25=41/0.25 = 4 ciclos de CPU. Una búsqueda de 4 ms son 4⋅106/0.25=16⋅1064 \cdot 10^6 / 0.25 = 16 \cdot 10^6 ciclos.


1. Espacio de direcciones de E/S

1.1 E/S localizada en memoria

ND=2n=NDM+NDP⟹NDP=2n−NDMN_D = 2^n = N_{DM} + N_{DP} \qquad\Longrightarrow\qquad N_{DP} = 2^n - N_{DM}

VariableSignificado
nnLíneas de dirección
NDN_DDirecciones totales
NDMN_{DM}Direcciones ocupadas por la memoria
NDPN_{DP}Direcciones que quedan para periféricos

Uso: memoria y E/S comparten el espacio. Ejemplo: 24 líneas y 12 MiB: NDP=16⋅220−12⋅220=222N_{DP} = 16 \cdot 2^{20} - 12 \cdot 2^{20} = 2^{22}.

1.2 E/S aislada

NDM=NDP=2nN_{DM} = N_{DP} = 2^n

Uso: líneas de control separadas para memoria y E/S. La memoria no interviene en el cálculo. Ejemplo: 32 líneas: NDP=232N_{DP} = 2^{32}, sea cual sea la memoria.

1.3 Número máximo de periféricos

Nperifeˊricos=NDPdN_{\text{periféricos}} = \frac{N_{DP}}{d}

VariableSignificado
ddDirecciones (puertos) que ocupa cada periférico

Ejemplo: NDP=222N_{DP} = 2^{22} y d=4d = 4: 220=1 048 5762^{20} = 1\,048\,576 periféricos. Con puertos de 16 bits: 216/4=214=16 3842^{16}/4 = 2^{14} = 16\,384.

1.4 Tamaño de un rango de direcciones

N=dirfinal−dirinicial+1N = \text{dir}_{\text{final}} - \text{dir}_{\text{inicial}} + 1

Ejemplo: hueco PCI de 0xC000_0000 a 0xFFFF_FFFF: 1 073 741 8241\,073\,741\,824 direcciones =1= 1 GiB (unidad direccionable: byte).


2. E/S controlada por programa

2.1 Fases de una lectura de un bloque

tinicio=Nreg⋅tbustbloque=Sbloquevdiscotlisto=tinicio+tbuˊsqueda+tbloquet_{inicio} = N_{reg} \cdot t_{bus} \qquad t_{bloque} = \frac{S_{bloque}}{v_{disco}} \qquad t_{listo} = t_{inicio} + t_{búsqueda} + t_{bloque}

VariableSignificado
NregN_{reg}Registros que escribe la CPU para lanzar la orden (2 con programa e interrupciones, 3 con DMA o PE/S en los ejemplos)
tbust_{bus}Duración de una operación de bus
tbuˊsquedat_{búsqueda}Tiempo que tarda el disco en localizar el bloque
SbloqueS_{bloque}Tamaño del bloque
vdiscov_{disco}Velocidad sostenida del disco
tlistot_{listo}Instante en que el dato está disponible

Ejemplo: tinicio=8t_{inicio} = 8, tbuˊsqueda=16 000 000t_{búsqueda} = 16\,000\,000 y tbloque=26 041.66t_{bloque} = 26\,041.66 ciclos: tlisto=16 026 049.66t_{listo} = 16\,026\,049.66 ciclos.

Detección: con espera activa, la CPU solo ve el estado al acabar un ciclo de bus. Se redondea al siguiente múltiplo de tbust_{bus} en ciclos (16 026 052 en el ejemplo).

2.2 Copia de un bloque por la CPU

Npb=SbloqueSpalabratcopia=2⋅Npb⋅tbusN_{pb} = \frac{S_{bloque}}{S_{palabra}} \qquad t_{copia} = 2 \cdot N_{pb} \cdot t_{bus}

VariableSignificado
NpbN_{pb}Palabras por bloque
SpalabraS_{palabra}Tamaño de la palabra que mueve el bus
2Cada palabra requiere leer del periférico y escribir en memoria

Ejemplo: 4 KiB y palabras de 8 B: Npb=512N_{pb} = 512; tcopia=2⋅512⋅4=4096t_{copia} = 2 \cdot 512 \cdot 4 = 4096 ciclos.

2.3 Porcentaje de CPU en espera activa

Pespera=tesperaTtotal⋅100 %Ttotal=T+tcopiaP_{espera} = \frac{t_{espera}}{T_{total}} \cdot 100\ \% \qquad T_{total} = T + t_{copia}

Ejemplo: 16 026 050/16 030 148≈99.97 %16\,026\,050 / 16\,030\,148 \approx 99.97\ \%.

2.4 Lectura de una ráfaga de bloques contiguos

Ttotal=T+tcopia+(Nb−1)(T2+tcopia)T2=2tbus+tbloque (redondeado al ciclo de bus)T_{total} = T + t_{copia} + (N_b - 1)(T_2 + t_{copia}) \qquad T_2 = 2t_{bus} + t_{bloque}\ (\text{redondeado al ciclo de bus})

Nb=StotalSbloquevmedia=StotalTtotalN_b = \frac{S_{total}}{S_{bloque}} \qquad v_{media} = \frac{S_{total}}{T_{total}}

VariableSignificado
NbN_bNúmero de bloques
TTFin de la espera del primer bloque (con búsqueda)
T2T_2Espera de cada bloque siguiente (sin búsqueda)

Ejemplo: 100 MiB: Nb=25 600N_b = 25\,600; Ttotal=787 788 800T_{total} = 787\,788\,800 ciclos ≈0.197\approx 0.197 s; vmedia≈508v_{media} \approx 508 MiB/s.


3. Interrupciones

3.1 Sobrecarga de interrupciones periódicas

tint=2 tcc+tRSISobrecarga=fint⋅tint1 s⋅100 %t_{int} = 2\,t_{cc} + t_{RSI} \qquad \text{Sobrecarga} = \frac{f_{int} \cdot t_{int}}{1\text{ s}} \cdot 100\ \%

VariableSignificado
tcct_{cc}Tiempo de un cambio de contexto (hay dos: entrada y salida)
tRSIt_{RSI}Duración de la rutina de servicio
fintf_{int}Interrupciones por segundo (frecuencia del tic)

Ejemplo: 100 Hz, tcc=1t_{cc} = 1 µs, tRSI=300t_{RSI} = 300 ns: 100⋅2.3 µs=230100 \cdot 2.3\text{ µs} = 230 µs, es decir 0.023 %. Con 1000 Hz y tint=3t_{int} = 3 µs: 0.3 %.

3.2 Frecuencia máxima para una sobrecarga dada

fmax=p⋅1 stintf_{max} = \frac{p \cdot 1\text{ s}}{t_{int}}

VariableSignificado
ppSobrecarga máxima admitida, en tanto por uno

Ejemplo: p=0.01p = 0.01 y tint=3t_{int} = 3 µs: fmax=10 000/3≈3333f_{max} = 10\,000/3 \approx 3333 Hz.

3.3 Energía: interrupciones frente a espera activa

tactivo=Ninstr⋅CPIfEint=tactivo⋅k+tsleep⋅1Eact=(tactivo+tsleep)⋅kt_{activo} = \frac{N_{instr} \cdot CPI}{f} \qquad E_{int} = t_{activo} \cdot k + t_{sleep} \cdot 1 \qquad E_{act} = (t_{activo} + t_{sleep}) \cdot k

Ahorro=Eact−EintEact⋅100 %Duracioˊn relativa de la baterıˊa=EactEint\text{Ahorro} = \frac{E_{act} - E_{int}}{E_{act}} \cdot 100\ \% \qquad \text{Duración relativa de la batería} = \frac{E_{act}}{E_{int}}

VariableSignificado
ueUnidad de energía: consumo de 1 s en bajo consumo
kkCuántas veces más consume el modo normal (ue/s)
tsleept_{sleep}Tiempo dormido por periodo
NinstrN_{instr}Instrucciones ejecutadas por periodo

Ejemplo: 8 MHz, 400 instrucciones, tsleep=0.5t_{sleep} = 0.5 s, k=5000k = 5000: tactivo=50t_{activo} = 50 µs, Eint=0.75E_{int} = 0.75 ue, Eact=2500.25E_{act} = 2500.25 ue; ahorro 99.97 %; la batería dura unas 3334 veces más.

3.4 Enmascaramiento individual

REj=PIj⋅MjPI=RE1+RE2+⋯+REnRE_j = PI_j \cdot M_j \qquad PI = RE_1 + RE_2 + \cdots + RE_n

VariableSignificado
PIjPI_jPetición por la línea jj
MjM_jBit de máscara (1 = permitida, 0 = bloqueada)
REjRE_jPetición efectiva (pasa el filtro)
PIPISeñal única hacia la CPU

Uso: pasar la máscara a binario, quedarse con las peticiones con Mj=1M_j = 1 y, de ellas, atender la más prioritaria. Ejemplo: máscara 5A16=0101 101025A_{16} = 0101\,1010_2 con peticiones en PI1, PI3 y PI5: solo M5=1M_5 = 1, así que se atiende PI5.

3.5 Enmascaramiento por nivel

Se atiende si C>A\text{Se atiende si } C > A

VariableSignificado
CCNivel de prioridad de la petición (lo asigna el codificador)
AANivel de prioridad de ejecución de la CPU

Uso: una RSI eleva AA a su nivel al entrar y lo restaura al salir. Ejemplo: C=9−jC = 9 - j y se atiende PI5 (A=4A = 4). Llegan PI2 (7), PI4 (5), PI6 (3), PI7 (2). Orden: PI2, PI4, fin de PI5, PI6, PI7.

3.6 Coste de una interrupción y ancho de banda

tI=tRI+tSIBWmax=BtIt_I = t_{RI} + t_{SI} \qquad BW_{max} = \frac{B}{t_I}

VariableSignificado
tRIt_{RI}Tiempo de reconocimiento de la interrupción
tSIt_{SI}Tiempo de ejecución de la RSI
BBBytes transferidos por interrupción

Ejemplo: B=256B = 256 B, tRI=50t_{RI} = 50 ns, tSI=100t_{SI} = 100 ns: BW=256/150 ns=1.71BW = 256/150\text{ ns} = 1.71 GB/s.

3.7 Instrucciones máximas de la RSI para un ancho de banda

tT=BBWtSI=tT−tRIve=fCPIN=tSI⋅vet_T = \frac{B}{BW} \qquad t_{SI} = t_T - t_{RI} \qquad v_e = \frac{f}{CPI} \qquad N = t_{SI} \cdot v_e

VariableSignificado
tTt_TTiempo disponible entre interrupciones
vev_eVelocidad de ejecución (instrucciones/s)
CPICPICiclos por instrucción
NNInstrucciones máximas de la RSI

Ejemplo: B=512B = 512 B, 800 MB/s, tRI=80t_{RI} = 80 ns, 2 GHz, CPI = 4: tT=640t_T = 640 ns, tSI=560t_{SI} = 560 ns, ve=0.5⋅109v_e = 0.5 \cdot 10^9, N=280N = 280.

3.8 Identificación por encuesta

tatencioˊn(k)=tRI+k⋅tconsulta+tRSItatencioˊnlıˊneas/MSI=tRI+tRSIt_{atención}(k) = t_{RI} + k \cdot t_{consulta} + t_{RSI} \qquad t_{atención}^{\text{líneas/MSI}} = t_{RI} + t_{RSI}

VariableSignificado
kkPosición del periférico en el orden de encuesta
tconsultat_{consulta}Tiempo de consultar un periférico

Ejemplo: tRI=60t_{RI} = 60 ns, tconsulta=40t_{consulta} = 40 ns, tRSI=300t_{RSI} = 300 ns, 6 periféricos: mejor caso 400 ns, peor caso 600 ns; con múltiples líneas o MSI, 360 ns.

3.9 Fracción de CPU consumida por un periférico que interrumpe

PCPU=fint⋅tatencioˊn⋅100 %P_{CPU} = f_{int} \cdot t_{atención} \cdot 100\ \%

Ejemplo: interrupción cada 1 µs (10610^6 por segundo): con encuesta (600 ns), 60 %; con múltiples líneas (360 ns), 36 %.

3.10 Lectura de un bloque con interrupciones

tint=2tcc+te+tcopiaTtotal=T+tintPCPU=tinicio+tintTtotal⋅100 %t_{int} = 2t_{cc} + t_e + t_{copia} \qquad T_{total} = T + t_{int} \qquad P_{CPU} = \frac{t_{inicio} + t_{int}}{T_{total}} \cdot 100\ \%

VariableSignificado
tet_eEjecución de las instrucciones propias de la RSI
TTInstante en que se atiende la interrupción (siguiente ciclo de CPU tras el dato listo)

Ejemplo: tint=8000+100+4096=12 196t_{int} = 8000 + 100 + 4096 = 12\,196 ciclos; Ttotal=16 038 246T_{total} = 16\,038\,246; PCPU=12 204/16 038 246=0.076 %P_{CPU} = 12\,204/16\,038\,246 = 0.076\ \%.

3.11 Ráfaga de bloques con interrupciones

TF=T+(Nb−1)(tint−tcc+⌈tbloque⌉)+tintT_F = T + (N_b - 1)\left(t_{int} - t_{cc} + \lceil t_{bloque} \rceil\right) + t_{int}

Uso: la RSI pide el bloque siguiente justo antes del cambio de contexto de salida (se cumple tbloque>tcct_{bloque} > t_{cc}, sin solapamiento). Ejemplo: TF=871 954 008T_F = 871\,954\,008 ciclos ≈0.218\approx 0.218 s; vmedia≈459v_{media} \approx 459 MiB/s.


4. DMA

4.1 Tiempo de CPU asociado a un DMA

TDMA=TDMA(inicio)+TDMA(bus)+TDMA(final)T_{DMA} = T_{DMA}(\text{inicio}) + T_{DMA}(\text{bus}) + T_{DMA}(\text{final})

TérminoSignificado
inicioInstrucciones de inicialización del controlador
busTiempo de CPU detenida por haber cedido el bus
finalRSI de la interrupción de fin de transferencia

4.2 Lectura de un bloque con DMA

tint=2tcc+teTtotal=T+tcopia+tintTCPU=tinicio+tintt_{int} = 2t_{cc} + t_e \qquad T_{total} = T + t_{copia} + t_{int} \qquad T_{CPU} = t_{inicio} + t_{int}

Ejemplo: tint=8100t_{int} = 8100 ciclos (la copia la hace el DMA); Ttotal=16 026 056+4096+8100=16 038 252T_{total} = 16\,026\,056 + 4096 + 8100 = 16\,038\,252; CPU =8112= 8112 ciclos, es decir 0.05 %.

4.3 CPU total en una ráfaga: DMA frente a interrupciones

TCPU=Nb⋅tint+tinicioMejora=TCPU,INT−TCPU,DMATCPU,INT⋅100 %T_{CPU} = N_b \cdot t_{int} + t_{inicio} \qquad \text{Mejora} = \frac{T_{CPU,INT} - T_{CPU,DMA}}{T_{CPU,INT}} \cdot 100\ \%

Ejemplo: 25 600⋅8100+12=207 360 01225\,600 \cdot 8100 + 12 = 207\,360\,012 frente a 25 600⋅12 196+8=312 217 60825\,600 \cdot 12\,196 + 8 = 312\,217\,608: 33.6 % menos de CPU.

4.4 Propagación y transmisión en un bus serie

tp=dctt=bitsBWteoˊricoT=2tp+ttBWef=bitsTt_p = \frac{d}{c} \qquad t_t = \frac{\text{bits}}{BW_{teórico}} \qquad T = 2t_p + t_t \qquad BW_{ef} = \frac{\text{bits}}{T}

VariableSignificado
ddDistancia al dispositivo
ccVelocidad de la luz, 3⋅1083 \cdot 10^8 m/s
tpt_pTiempo de propagación (se cuenta ida y vuelta: datos y confirmación)
ttt_tTiempo de transmisión de los datos

Ejemplo: 15 cm, 16 Gb/s. Byte a byte: T=1.5T = 1.5 ns, BWef=5.33BW_{ef} = 5.33 Gb/s (33 %). Ráfaga de 4 KiB: T=2049T = 2049 ns, BWef=15.99BW_{ef} = 15.99 Gb/s (99.95 %).

4.5 DMA por robo de ciclos

N=SbloqueWbusT=(cinstr+1)⋅N⋅tcPbus,E/S=1cinstr+1PCPU=1−Pbus,E/SN = \frac{S_{bloque}}{W_{bus}} \qquad T = (c_{instr} + 1) \cdot N \cdot t_c \qquad P_{bus,E/S} = \frac{1}{c_{instr} + 1} \qquad P_{CPU} = 1 - P_{bus,E/S}

VariableSignificado
WbusW_{bus}Bytes por transferencia del bus
cinstrc_{instr}Ciclos de una instrucción
tct_cPeríodo de reloj
+1+1El ciclo robado por cada palabra

Ejemplo: 4 KiB con 4 B por ciclo: N=1024N = 1024; 5 ciclos por instrucción: T=6⋅1024⋅1 ns=6.144T = 6 \cdot 1024 \cdot 1\text{ ns} = 6.144 µs; bus 16.7 %; CPU 83.3 %.

4.6 DMA transparente

Ninstr=NkT=(Ninstr⋅cinstr−ciclos no usados al inicio y al final)⋅tcPbus,E/S=NT/tcN_{instr} = \frac{N}{k} \qquad T = (N_{instr} \cdot c_{instr} - \text{ciclos no usados al inicio y al final}) \cdot t_c \qquad P_{bus,E/S} = \frac{N}{T/t_c}

VariableSignificado
kkTransferencias por instrucción (ciclos en que la CPU no usa el bus)

Ejemplo: k=2k = 2: 512512 instrucciones, 2560−2=25582560 - 2 = 2558 ciclos, T=2.558T = 2.558 µs; bus 1024/2558≈40 %1024/2558 \approx 40\ \%; CPU 100 %.


5. Procesadores de E/S y canales

5.1 Velocidad máxima del canal

Selector: vT=max⁡{vT1,vT2,…}Multiplexor: vT=vT1+vT2+⋯\text{Selector: } v_T = \max\{v_{T1}, v_{T2}, \ldots\} \qquad\qquad \text{Multiplexor: } v_T = v_{T1} + v_{T2} + \cdots

Ejemplo: dos dispositivos de 50 MB/s y dos de 20 MB/s: selector 50 MB/s; multiplexor 140 MB/s.

5.2 Tiempo por byte, ocupación del bus y velocidad efectiva

tcanal=1 BvTtT=max⁡{tbus, tcanal}P=tbustT⋅100 %vef=1 BtTt_{canal} = \frac{1\text{ B}}{v_T} \qquad t_T = \max\{t_{bus},\ t_{canal}\} \qquad P = \frac{t_{bus}}{t_T} \cdot 100\ \% \qquad v_{ef} = \frac{1\text{ B}}{t_T}

VariableSignificado
tbust_{bus}Tiempo que el bus del sistema está ocupado por cada byte
tcanalt_{canal}Tiempo del canal por byte
tTt_TTiempo real por byte (manda el más lento)
PPOcupación del bus (100 % significa saturado)

Ejemplo: 4 SSD de 200 MB/s y 4 cintas de 40 MB/s, tbus=2t_{bus} = 2 ns.

  • Selector: tcanal=5t_{canal} = 5 ns, P=40 %P = 40\ \%, vef=200v_{ef} = 200 MB/s.
  • Multiplexor: vT=960v_T = 960 MB/s, tcanal=1.04t_{canal} = 1.04 ns, tT=2t_T = 2 ns, P=100 %P = 100\ \%, vef=500v_{ef} = 500 MB/s.
  • Para no saturar: tbus≤1.04t_{bus} \leq 1.04 ns.

5.3 Lectura con PE/S

tcopia=SvdiscoTF=T+tcopia+tintTCPU=tinicio+tintt_{copia} = \frac{S}{v_{disco}} \qquad T_F = T + t_{copia} + t_{int} \qquad T_{CPU} = t_{inicio} + t_{int}

Uso: el PE/S lee y escribe por buses distintos a la vez, así que la copia va al ritmo del disco y la CPU solo interviene una vez. Ejemplo: 100 MiB a 600 MiB/s: tcopia≈666 666 667t_{copia} \approx 666\,666\,667 ciclos, TF=682 700 823T_F = 682\,700\,823 ciclos ≈0.171\approx 0.171 s; vmedia≈585v_{media} \approx 585 MiB/s.


6. E/S de gráficos

6.1 Tamaño de un fotograma y tiempo de bus

Npx=H⋅VSframe=Npx⋅bpx8Ntransf=SframeWbustframe=Ntransf⋅tbusN_{px} = H \cdot V \qquad S_{frame} = N_{px} \cdot \frac{b_{px}}{8} \qquad N_{transf} = \frac{S_{frame}}{W_{bus}} \qquad t_{frame} = N_{transf} \cdot t_{bus}

VariableSignificado
H×VH \times VResolución horizontal por vertical
bpxb_{px}Profundidad de color (bits por píxel)
WbusW_{bus}Bytes por transferencia del bus

Ejemplo: Full HD a 32 bits: 2 073 6002\,073\,600 px, 8 294 4008\,294\,400 B, 1 036 8001\,036\,800 transferencias, 1.0371.037 ms.

6.2 Ocupación del bus con memoria compartida

PCPU,E/S=tframe⋅fps1 sPpantalla=tframe⋅frefresco1 sPbus=PCPU,E/S+PpantallaP_{CPU,E/S} = \frac{t_{frame} \cdot fps}{1\text{ s}} \qquad P_{pantalla} = \frac{t_{frame} \cdot f_{refresco}}{1\text{ s}} \qquad P_{bus} = P_{CPU,E/S} + P_{pantalla}

VariableSignificado
fpsfpsFotogramas que escribe la CPU por segundo
frefrescof_{refresco}Veces por segundo que el controlador lee la imagen (aunque no cambie)

Ejemplo: Full HD a 60 fps y 60 Hz: 6.22 %+6.22 %=12.44 %6.22\ \% + 6.22\ \% = 12.44\ \% del bus.

6.3 Uso de CPU calculando píxeles

tcaˊlculo=Npx⋅Ninstr/px⋅tinstrPCPU=tcaˊlculo⋅fps1 s+PCPU,E/St_{cálculo} = N_{px} \cdot N_{instr/px} \cdot t_{instr} \qquad P_{CPU} = \frac{t_{cálculo} \cdot fps}{1\text{ s}} + P_{CPU,E/S}

Ejemplo: Full HD, 20 instrucciones de 0.25 ns por píxel: tcaˊlculo=10.37t_{cálculo} = 10.37 ms; a 60 fps, 62.2 %; con la escritura, 68.4 %.

6.4 Uso de CPU con GPU

Soˊrdenes=Noˊrd⋅Soˊrdttx=SoˊrdenesBWPCIetconstr=Noˊrd⋅coˊrd⋅tcicloS_{órdenes} = N_{órd} \cdot S_{órd} \qquad t_{tx} = \frac{S_{órdenes}}{BW_{PCIe}} \qquad t_{constr} = N_{órd} \cdot c_{órd} \cdot t_{ciclo}

PCPU=(ttx+tconstr)⋅fps1 s⋅100 %P_{CPU} = \frac{(t_{tx} + t_{constr}) \cdot fps}{1\text{ s}} \cdot 100\ \%

VariableSignificado
NoˊrdN_{órd}Órdenes de dibujo por fotograma
SoˊrdS_{órd}Tamaño de cada orden
BWPCIeBW_{PCIe}Ancho de banda efectivo del bus PCIe
coˊrdc_{órd}Ciclos para construir cada orden

Ejemplo: 100 000 órdenes de 8 B, 30 GB/s, 10 ciclos de 0.25 ns, 60 fps: ttx=26.7t_{tx} = 26.7 µs (0.16 %), tconstr=0.25t_{constr} = 0.25 ms (1.5 %), total 1.66 %.


Tabla resumen rápida

ConceptoFórmula
E/S localizadaNDP=2n−NDMN_{DP} = 2^n - N_{DM}
E/S aisladaNDP=2nN_{DP} = 2^n
PeriféricosNDP/dN_{DP}/d
Copia por la CPUtcopia=2Npbtbust_{copia} = 2 N_{pb} t_{bus}
Sobrecarga periódicafint(2tcc+tRSI)f_{int}(2t_{cc} + t_{RSI})
Enmascaramiento individualREj=PIjMjRE_j = PI_j M_j, PI=∑REjPI = \sum RE_j
Enmascaramiento por nivelatender si C>AC > A
Coste de una interrupcióntI=tRI+tSIt_I = t_{RI} + t_{SI}
Ancho de banda con interrupcionesBW=B/tIBW = B/t_I
Instrucciones de la RSIN=(B/BW−tRI)⋅f/CPIN = (B/BW - t_{RI}) \cdot f/CPI
EncuestatRI+k tconsulta+tRSIt_{RI} + k\,t_{consulta} + t_{RSI}
DMATDMA=T_{DMA} = inicio ++ bus ++ final
Bus serieT=2d/c+bits/BWT = 2d/c + \text{bits}/BW
Robo de ciclosT=(cinstr+1)NtcT = (c_{instr}+1) N t_c
Canal selectorvT=max⁡vTiv_T = \max v_{Ti}
Canal multiplexorvT=∑vTiv_T = \sum v_{Ti}
Ocupación del bus del canalP=tbus/max⁡{tbus,1/vT}P = t_{bus}/\max\{t_{bus}, 1/v_T\}
FotogramaS=H⋅V⋅bpx/8S = H \cdot V \cdot b_{px}/8

David González Lombraña

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