📘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
| Magnitud | Relación |
|---|
| Período y frecuencia | t=1/f |
| Tiempos | 1 s =103 ms =106 µs =109 ns |
| Pasar un tiempo a ciclos de CPU | ciclos=t/tciclo |
| Pasar ciclos a tiempo | t=ciclos⋅tciclo |
| Prefijos binarios | 1 Ki =210, 1 Mi =220, 1 Gi =230 |
| Prefijos decimales | 1 k =103, 1 M =106, 1 G =109 |
Ejemplo: CPU a 4 GHz: tciclo=0.25 ns. Un bus a 1 GHz (tbus=1 ns) dura 1/0.25=4 ciclos de CPU. Una búsqueda de 4 ms son 4⋅106/0.25=16⋅106 ciclos.
1. Espacio de direcciones de E/S
1.1 E/S localizada en memoria
ND=2n=NDM+NDP⟹NDP=2n−NDM
| Variable | Significado |
|---|
| n | Líneas de dirección |
| ND | Direcciones totales |
| NDM | Direcciones ocupadas por la memoria |
| NDP | 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=222.
1.2 E/S aislada
NDM=NDP=2n
Uso: líneas de control separadas para memoria y E/S. La memoria no interviene en el cálculo.
Ejemplo: 32 líneas: NDP=232, sea cual sea la memoria.
1.3 Número máximo de periféricos
Nperifeˊricos=dNDP
| Variable | Significado |
|---|
| d | Direcciones (puertos) que ocupa cada periférico |
Ejemplo: NDP=222 y d=4: 220=1048576 periféricos. Con puertos de 16 bits: 216/4=214=16384.
1.4 Tamaño de un rango de direcciones
N=dirfinal−dirinicial+1
Ejemplo: hueco PCI de 0xC000_0000 a 0xFFFF_FFFF: 1073741824 direcciones =1 GiB (unidad direccionable: byte).
2. E/S controlada por programa
2.1 Fases de una lectura de un bloque
tinicio=Nreg⋅tbustbloque=vdiscoSbloquetlisto=tinicio+tbuˊsqueda+tbloque
| Variable | Significado |
|---|
| Nreg | Registros que escribe la CPU para lanzar la orden (2 con programa e interrupciones, 3 con DMA o PE/S en los ejemplos) |
| tbus | Duración de una operación de bus |
| tbuˊsqueda | Tiempo que tarda el disco en localizar el bloque |
| Sbloque | Tamaño del bloque |
| vdisco | Velocidad sostenida del disco |
| tlisto | Instante en que el dato está disponible |
Ejemplo: tinicio=8, tbuˊsqueda=16000000 y tbloque=26041.66 ciclos: tlisto=16026049.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 tbus en ciclos (16 026 052 en el ejemplo).
2.2 Copia de un bloque por la CPU
Npb=SpalabraSbloquetcopia=2⋅Npb⋅tbus
| Variable | Significado |
|---|
| Npb | Palabras por bloque |
| Spalabra | Tamaño de la palabra que mueve el bus |
| 2 | Cada palabra requiere leer del periférico y escribir en memoria |
Ejemplo: 4 KiB y palabras de 8 B: Npb=512; tcopia=2⋅512⋅4=4096 ciclos.
2.3 Porcentaje de CPU en espera activa
Pespera=Ttotaltespera⋅100 %Ttotal=T+tcopia
Ejemplo: 16026050/16030148≈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)
Nb=SbloqueStotalvmedia=TtotalStotal
| Variable | Significado |
|---|
| Nb | Número de bloques |
| T | Fin de la espera del primer bloque (con búsqueda) |
| T2 | Espera de cada bloque siguiente (sin búsqueda) |
Ejemplo: 100 MiB: Nb=25600; Ttotal=787788800 ciclos ≈0.197 s; vmedia≈508 MiB/s.
3. Interrupciones
3.1 Sobrecarga de interrupciones periódicas
tint=2tcc+tRSISobrecarga=1 sfint⋅tint⋅100 %
| Variable | Significado |
|---|
| tcc | Tiempo de un cambio de contexto (hay dos: entrada y salida) |
| tRSI | Duración de la rutina de servicio |
| fint | Interrupciones por segundo (frecuencia del tic) |
Ejemplo: 100 Hz, tcc=1 µs, tRSI=300 ns: 100⋅2.3 µs=230 µs, es decir 0.023 %. Con 1000 Hz y tint=3 µs: 0.3 %.
3.2 Frecuencia máxima para una sobrecarga dada
fmax=tintp⋅1 s
| Variable | Significado |
|---|
| p | Sobrecarga máxima admitida, en tanto por uno |
Ejemplo: p=0.01 y tint=3 µs: fmax=10000/3≈3333 Hz.
3.3 Energía: interrupciones frente a espera activa
tactivo=fNinstr⋅CPIEint=tactivo⋅k+tsleep⋅1Eact=(tactivo+tsleep)⋅k
Ahorro=EactEact−Eint⋅100 %Duracioˊn relativa de la baterıˊa=EintEact
| Variable | Significado |
|---|
| ue | Unidad de energía: consumo de 1 s en bajo consumo |
| k | Cuántas veces más consume el modo normal (ue/s) |
| tsleep | Tiempo dormido por periodo |
| Ninstr | Instrucciones ejecutadas por periodo |
Ejemplo: 8 MHz, 400 instrucciones, tsleep=0.5 s, k=5000: tactivo=50 µs, Eint=0.75 ue, Eact=2500.25 ue; ahorro 99.97 %; la batería dura unas 3334 veces más.
3.4 Enmascaramiento individual
REj=PIj⋅MjPI=RE1+RE2+⋯+REn
| Variable | Significado |
|---|
| PIj | Petición por la línea j |
| Mj | Bit de máscara (1 = permitida, 0 = bloqueada) |
| REj | Petición efectiva (pasa el filtro) |
| PI | Señal única hacia la CPU |
Uso: pasar la máscara a binario, quedarse con las peticiones con Mj=1 y, de ellas, atender la más prioritaria.
Ejemplo: máscara 5A16=010110102 con peticiones en PI1, PI3 y PI5: solo M5=1, así que se atiende PI5.
3.5 Enmascaramiento por nivel
Se atiende si C>A
| Variable | Significado |
|---|
| C | Nivel de prioridad de la petición (lo asigna el codificador) |
| A | Nivel de prioridad de ejecución de la CPU |
Uso: una RSI eleva A a su nivel al entrar y lo restaura al salir.
Ejemplo: C=9−j y se atiende PI5 (A=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=tIB
| Variable | Significado |
|---|
| tRI | Tiempo de reconocimiento de la interrupción |
| tSI | Tiempo de ejecución de la RSI |
| B | Bytes transferidos por interrupción |
Ejemplo: B=256 B, tRI=50 ns, tSI=100 ns: BW=256/150 ns=1.71 GB/s.
3.7 Instrucciones máximas de la RSI para un ancho de banda
tT=BWBtSI=tT−tRIve=CPIfN=tSI⋅ve
| Variable | Significado |
|---|
| tT | Tiempo disponible entre interrupciones |
| ve | Velocidad de ejecución (instrucciones/s) |
| CPI | Ciclos por instrucción |
| N | Instrucciones máximas de la RSI |
Ejemplo: B=512 B, 800 MB/s, tRI=80 ns, 2 GHz, CPI = 4: tT=640 ns, tSI=560 ns, ve=0.5⋅109, N=280.
3.8 Identificación por encuesta
tatencioˊn(k)=tRI+k⋅tconsulta+tRSItatencioˊnlıˊneas/MSI=tRI+tRSI
| Variable | Significado |
|---|
| k | Posición del periférico en el orden de encuesta |
| tconsulta | Tiempo de consultar un periférico |
Ejemplo: tRI=60 ns, tconsulta=40 ns, tRSI=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 %
Ejemplo: interrupción cada 1 µs (106 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=Ttotaltinicio+tint⋅100 %
| Variable | Significado |
|---|
| te | Ejecución de las instrucciones propias de la RSI |
| T | Instante en que se atiende la interrupción (siguiente ciclo de CPU tras el dato listo) |
Ejemplo: tint=8000+100+4096=12196 ciclos; Ttotal=16038246; PCPU=12204/16038246=0.076 %.
3.11 Ráfaga de bloques con interrupciones
TF=T+(Nb−1)(tint−tcc+⌈tbloque⌉)+tint
Uso: la RSI pide el bloque siguiente justo antes del cambio de contexto de salida (se cumple tbloque>tcc, sin solapamiento).
Ejemplo: TF=871954008 ciclos ≈0.218 s; vmedia≈459 MiB/s.
4. DMA
4.1 Tiempo de CPU asociado a un DMA
TDMA=TDMA(inicio)+TDMA(bus)+TDMA(final)
| Término | Significado |
|---|
| inicio | Instrucciones de inicialización del controlador |
| bus | Tiempo de CPU detenida por haber cedido el bus |
| final | RSI de la interrupción de fin de transferencia |
4.2 Lectura de un bloque con DMA
tint=2tcc+teTtotal=T+tcopia+tintTCPU=tinicio+tint
Ejemplo: tint=8100 ciclos (la copia la hace el DMA); Ttotal=16026056+4096+8100=16038252; CPU =8112 ciclos, es decir 0.05 %.
4.3 CPU total en una ráfaga: DMA frente a interrupciones
TCPU=Nb⋅tint+tinicioMejora=TCPU,INTTCPU,INT−TCPU,DMA⋅100 %
Ejemplo: 25600⋅8100+12=207360012 frente a 25600⋅12196+8=312217608: 33.6 % menos de CPU.
4.4 Propagación y transmisión en un bus serie
tp=cdtt=BWteoˊricobitsT=2tp+ttBWef=Tbits
| Variable | Significado |
|---|
| d | Distancia al dispositivo |
| c | Velocidad de la luz, 3⋅108 m/s |
| tp | Tiempo de propagación (se cuenta ida y vuelta: datos y confirmación) |
| tt | Tiempo de transmisión de los datos |
Ejemplo: 15 cm, 16 Gb/s. Byte a byte: T=1.5 ns, BWef=5.33 Gb/s (33 %). Ráfaga de 4 KiB: T=2049 ns, BWef=15.99 Gb/s (99.95 %).
4.5 DMA por robo de ciclos
N=WbusSbloqueT=(cinstr+1)⋅N⋅tcPbus,E/S=cinstr+11PCPU=1−Pbus,E/S
| Variable | Significado |
|---|
| Wbus | Bytes por transferencia del bus |
| cinstr | Ciclos de una instrucción |
| tc | Período de reloj |
| +1 | El ciclo robado por cada palabra |
Ejemplo: 4 KiB con 4 B por ciclo: N=1024; 5 ciclos por instrucción: T=6⋅1024⋅1 ns=6.144 µs; bus 16.7 %; CPU 83.3 %.
4.6 DMA transparente
Ninstr=kNT=(Ninstr⋅cinstr−ciclos no usados al inicio y al final)⋅tcPbus,E/S=T/tcN
| Variable | Significado |
|---|
| k | Transferencias por instrucción (ciclos en que la CPU no usa el bus) |
Ejemplo: k=2: 512 instrucciones, 2560−2=2558 ciclos, T=2.558 µs; bus 1024/2558≈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+⋯
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=vT1 BtT=max{tbus, tcanal}P=tTtbus⋅100 %vef=tT1 B
| Variable | Significado |
|---|
| tbus | Tiempo que el bus del sistema está ocupado por cada byte |
| tcanal | Tiempo del canal por byte |
| tT | Tiempo real por byte (manda el más lento) |
| P | Ocupación del bus (100 % significa saturado) |
Ejemplo: 4 SSD de 200 MB/s y 4 cintas de 40 MB/s, tbus=2 ns.
- Selector: tcanal=5 ns, P=40 %, vef=200 MB/s.
- Multiplexor: vT=960 MB/s, tcanal=1.04 ns, tT=2 ns, P=100 %, vef=500 MB/s.
- Para no saturar: tbus≤1.04 ns.
5.3 Lectura con PE/S
tcopia=vdiscoSTF=T+tcopia+tintTCPU=tinicio+tint
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≈666666667 ciclos, TF=682700823 ciclos ≈0.171 s; vmedia≈585 MiB/s.
6. E/S de gráficos
6.1 Tamaño de un fotograma y tiempo de bus
Npx=H⋅VSframe=Npx⋅8bpxNtransf=WbusSframetframe=Ntransf⋅tbus
| Variable | Significado |
|---|
| H×V | Resolución horizontal por vertical |
| bpx | Profundidad de color (bits por píxel) |
| Wbus | Bytes por transferencia del bus |
Ejemplo: Full HD a 32 bits: 2073600 px, 8294400 B, 1036800 transferencias, 1.037 ms.
6.2 Ocupación del bus con memoria compartida
PCPU,E/S=1 stframe⋅fpsPpantalla=1 stframe⋅frefrescoPbus=PCPU,E/S+Ppantalla
| Variable | Significado |
|---|
| fps | Fotogramas que escribe la CPU por segundo |
| frefresco | 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 % del bus.
6.3 Uso de CPU calculando píxeles
tcaˊlculo=Npx⋅Ninstr/px⋅tinstrPCPU=1 stcaˊlculo⋅fps+PCPU,E/S
Ejemplo: Full HD, 20 instrucciones de 0.25 ns por píxel: tcaˊ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=BWPCIeSoˊrdenestconstr=Noˊrd⋅coˊrd⋅tciclo
PCPU=1 s(ttx+tconstr)⋅fps⋅100 %
| Variable | Significado |
|---|
| Noˊrd | Órdenes de dibujo por fotograma |
| Soˊrd | Tamaño de cada orden |
| BWPCIe | Ancho de banda efectivo del bus PCIe |
| coˊ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.7 µs (0.16 %), tconstr=0.25 ms (1.5 %), total 1.66 %.
Tabla resumen rápida
| Concepto | Fórmula |
|---|
| E/S localizada | NDP=2n−NDM |
| E/S aislada | NDP=2n |
| Periféricos | NDP/d |
| Copia por la CPU | tcopia=2Npbtbus |
| Sobrecarga periódica | fint(2tcc+tRSI) |
| Enmascaramiento individual | REj=PIjMj, PI=∑REj |
| Enmascaramiento por nivel | atender si C>A |
| Coste de una interrupción | tI=tRI+tSI |
| Ancho de banda con interrupciones | BW=B/tI |
| Instrucciones de la RSI | N=(B/BW−tRI)⋅f/CPI |
| Encuesta | tRI+ktconsulta+tRSI |
| DMA | TDMA= inicio + bus + final |
| Bus serie | T=2d/c+bits/BW |
| Robo de ciclos | T=(cinstr+1)Ntc |
| Canal selector | vT=maxvTi |
| Canal multiplexor | vT=∑vTi |
| Ocupación del bus del canal | P=tbus/max{tbus,1/vT} |
| Fotograma | S=H⋅V⋅bpx/8 |