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?
cpu
multi-tasking
Rêve le
la source
la source
Réponses:
É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).1 GHz = 109Hz t ≈ t ⋅ 10- 9s
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 .dix- 5s t < 104 104 10−5s
la source
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.
la source