¿Por qué la reproducción de audio no detiene otras tareas?

10

Si los procesadores solo pueden ejecutar una cosa a la vez, ¿por qué puedo reproducir música continuamente y aún así poder ejecutar otras tareas?

Entiendo el sistema de interrupción, pero ¿no es necesario que la CPU procese continuamente el audio para que no suene nervioso / lento?

Estoy preguntando sobre la implementación subyacente, ¿esta pregunta está relacionada con subprocesos múltiples? ¿Cómo puede una CPU de 1 núcleo y 1 subproceso lograr esta multitarea?

Suéñalo
fuente
"Jittery" puedo entender, pero ¿cómo suena "laggy"? (PD: La salida del sintonizador de FM de mi iPod nano retrasa la salida de una radio FM analógica sintonizada en la misma estación aproximadamente un cuarto de segundo, pero no puedo escuchar el retraso si escucho solo el iPod)
Solomon Slow
@jameslarge Si estuvieras jugando un videojuego, algo como un cuarto de segundo de retraso en el sonido sería extremadamente notable. Del mismo modo para videoconferencias.
Derek Elkins salió del SE
3
Como señala la respuesta de Ariel, hay una gran potencia de procesamiento incluso en una CPU bastante antigua para manejar esta tarea. Sin embargo, estoy bastante seguro de que esta tarea ha sido y sigue siendo manejada en gran parte por coprocesadores de audio. El trabajo de la CPU es simplemente llenar los búferes de coprocesadores de audio que no requieren ningún procesamiento "continuo" por parte de la CPU, especialmente para música donde todos los datos están disponibles por adelantado.
Derek Elkins salió del SE
Optaría por DMAC, unidades de procesamiento de tarjetas de sonido y buffers.
Mal

Respuestas:

9

Dado que la CPU funciona en ciclos de reloj fijos, nada es realmente continuo, solo lo parece porque la discretización es lo suficientemente sensible.

Suponga que la velocidad de reloj de su CPU es . Si la CPU solo dedica uno en ciclos de reloj al procesamiento de audio (y utiliza los ciclos de reloj restantes para tareas no relacionadas), entonces tiene un retraso de entre cada "tarea de procesamiento de audio" preformada por la CPU (por simplicidad, asumimos que la CPU realiza este procesamiento usando solo un ciclo de reloj).t t 10 - 9 s1GHz=109Hztt109s

Digamos que permitimos un retraso de (los humanos escuchan frecuencias en el rango de 20Hz a 20Khz, por lo que el oído humano no será sensible a dicho retraso), entonces necesitamos requerir , para que la CPU pueda manejar simultáneamente tareas más mientras mantiene un retraso de .t < 10 4 10 4 10 - 5 s105st<104104105s

Ariel
fuente
8

Hace 40 años, podría haber tenido una computadora donde la CPU controlaba el altavoz directamente. Esos tiempos terminaron hace mucho tiempo.

Es posible que tenga una computadora con una tarjeta de sonido primitiva. Dicha tarjeta de sonido tendrá un búfer para muestras de audio estéreo, ese búfer se puede llenar, se iniciará la función de salida y la tarjeta de sonido comenzará a generar audio a partir de las muestras en sus búferes, sin que la CPU tenga que hacer nada. Todo lo que necesita hacer la CPU es llenar los búferes con más muestras de audio antes de que se agote. Si tiene un búfer de un megabyte, son 250,000 muestras estéreo en calidad de CD, eso es aproximadamente seis segundos. Entonces, cada pocos segundos, la CPU tiene que llenar estos búferes nuevamente.

En realidad, su computadora tendrá algo mucho más avanzado. En principio, lo mismo, pero las memorias intermedias se pueden llenar directamente con sonido en formato mp3 o aac, por ejemplo, y la tarjeta de sonido decodificará estos datos en muestras estéreo por sí misma. Lo más probable es que se pueda programar para producir todo tipo de efectos diferentes, desde el volumen del sonido, mejorando la calidad del sonido, cambiando el tono o la velocidad de forma independiente, generando sonido envolvente, etc.

La CPU no hace mucho, solo llena los búferes de sonido de vez en cuando. El resto lo hace otra cosa. Por supuesto, cuando digo "tarjeta de sonido", estos se han reducido de tarjetas de sonido a chips a una pequeña cantidad de transistores en un chip masivo con muchas funcionalidades diferentes.

Para un fabricante de tales tarjetas, mire https://en.wikipedia.org/wiki/Wolfson_Microelectronics como punto de partida.

gnasher729
fuente