Pourquoi la lecture audio n'arrête-t-elle pas d'autres tâches?

10

Si les processeurs ne peuvent exécuter qu'une seule chose à la fois, comment se fait-il que je puisse jouer de la musique en continu et pouvoir exécuter d'autres tâches?

Je comprends le système d'interruption, mais n'est-il pas nécessaire que le processeur traite continuellement l'audio pour qu'il ne sonne pas nerveux / décalé?

Je pose des questions sur l'implémentation sous-jacente, cette question est-elle liée au multi-threading? Comment un processeur 1 cœur et 1 thread peut-il réaliser ce multitâche?

Rêve le
la source
"Jittery" Je peux comprendre, mais à quoi ressemble "laggy"? (PS, la sortie du tuner FM de mon iPod nano est inférieure d'environ un quart de seconde à la sortie d'une radio FM analogique réglée sur la même station, mais je n'entends pas le décalage si j'écoute l'iPod seul.)
Solomon Slow
@jameslarge Si vous jouiez à un jeu vidéo, quelque chose comme un décalage d'un quart de seconde dans le son serait extrêmement visible. De même pour la visioconférence.
Derek Elkins a quitté le SE
3
Comme le souligne la réponse d'Ariel, il y a beaucoup de puissance de traitement même dans un processeur assez ancien pour gérer cette tâche. Cependant, je suis à peu près sûr que cette tâche a été en grande partie et continue d'être gérée par des coprocesseurs audio. Le travail du CPU est alors de simplement remplir les tampons des coprocesseurs audio qui ne nécessitent aucun traitement "continu" par le CPU, en particulier pour la musique où toutes les données sont disponibles à l'avance.
Derek Elkins a quitté le SE
J'opterais pour le DMAC, les unités de traitement de carte son et les tampons.
Evil

Réponses:

9

Étant donné que le CPU fonctionne en cycles d'horloge fixes, rien n'est vraiment continu, semble seulement parce que la discrétisation est suffisamment sensible.

Supposons que la fréquence d'horloge de votre CPU soit . Si le processeur ne consacre qu'un cycle d'horloge en au traitement audio (et utilise les cycles d'horloge restants pour des tâches non liées), vous avez un délai de entre chaque "tâche de traitement audio" préformée par le processeur (pour simplifier, nous supposons que le processeur effectue ce traitement en utilisant un seul cycle d'horloge).1GHz=109Hztt109s

Disons que nous autorisons un retard de (les humains entendent des fréquences dans la plage de 20 Hz à 20 kHz, donc l'ouïe humaine ne sera pas sensible à ce retard), alors nous devons exiger , de sorte que le processeur peut gérer simultanément tâches supplémentaires tout en conservant un délai de .105st<104104105s

Ariel
la source
8

Il y a 40 ans, vous aviez peut-être un ordinateur où le CPU contrôlait directement le haut-parleur. Ces temps sont révolus, il y a longtemps.

Vous pouvez avoir un ordinateur avec une carte son primitive. Une telle carte son aura un tampon pour les échantillons audio stéréo, ce tampon peut être rempli, la fonction de sortie sera démarrée et la carte son commencera à générer du son à partir des échantillons dans ses tampons, sans que le CPU n'ait rien à faire. Tout ce que le CPU doit faire est de remplir les tampons avec plus d'échantillons audio avant de s'épuiser. Si vous avez un tampon d'un mégaoctet, c'est 250 000 échantillons stéréo en qualité CD, c'est environ six secondes. Donc, toutes les quelques secondes, le CPU doit à nouveau remplir ces tampons.

En réalité, votre ordinateur aura quelque chose de beaucoup plus avancé. En principe, c'est la même chose, mais les tampons peuvent être remplis directement avec du son au format mp3 ou aac, par exemple, et la carte son décodera ces données en échantillons stéréo par elle-même. Très probablement, il peut être programmé pour produire toutes sortes d'effets différents, à partir du volume sonore, en améliorant la qualité du son, en changeant la hauteur ou la vitesse indépendamment, en générant un son surround, etc.

Le CPU ne fait pas grand-chose, remplissant simplement les tampons sonores de temps en temps. Le reste se fait par autre chose. Bien sûr, quand je dis "carte son", celles-ci sont passées de cartes son à puces à une toute petite tache de transistors sur une puce massive avec beaucoup de fonctionnalités différentes.

Pour un fabricant de telles cartes, regardez https://en.wikipedia.org/wiki/Wolfson_Microelectronics comme point de départ.

gnasher729
la source