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?
cpu
multi-tasking
Suéñalo
fuente
fuente
Respuestas:
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=109Hz t ≈t⋅10−9s
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 s10−5s t<104 104 10−5s
fuente
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.
fuente