Warum stoppt die Audiowiedergabe andere Aufgaben nicht?


10

Wenn Prozessoren jeweils nur eine Sache ausführen können, warum kann ich dann kontinuierlich Musik abspielen und trotzdem andere Aufgaben ausführen?

Ich verstehe das Interrupt-System, aber ist es nicht erforderlich, dass die CPU kontinuierlich Audio verarbeitet, damit es nicht nervös / verzögert klingt?

Ich frage nach der zugrunde liegenden Implementierung. Bezieht sich diese Frage auf Multithreading? Wie kann eine 1-Kern-CPU mit 1 Thread dieses Multitasking erreichen?


"Jittery" kann ich verstehen, aber wie klingt "laggy"? (PS: Der FM-Tuner-Ausgang meines iPod nano liegt etwa eine Viertelsekunde hinter dem Ausgang eines analogen FM-Radios, das auf denselben Sender eingestellt ist, aber ich kann die Verzögerung nicht hören, wenn ich nur den iPod höre.)
Solomon Slow

@jameslarge Wenn Sie ein Videospiel spielen würden, wäre eine Tonverzögerung von etwa einer Viertelsekunde äußerst auffällig. Ähnliches gilt für Videokonferenzen.
Derek Elkins verließ SE

3
Wie Ariels Antwort hervorhebt, steckt sogar in einer ziemlich alten CPU genügend Rechenleistung, um diese Aufgabe zu bewältigen. Ich bin mir jedoch ziemlich sicher, dass diese Aufgabe größtenteils von Audio-Coprozessoren übernommen wurde und wird. Die Aufgabe der CPU besteht dann darin, einfach die Puffer der Audio-Coprozessoren zu füllen, was keine "kontinuierliche" Verarbeitung durch die CPU erfordert, insbesondere für Musik, bei der alle Daten im Voraus verfügbar sind.
Derek Elkins verließ SE

Ich würde mich für DMAC, Soundkarten-Verarbeitungseinheiten und Puffer entscheiden.
Böse

Antworten:


9

Da die CPU in festen Taktzyklen arbeitet, ist nichts wirklich kontinuierlich, nur weil die Diskretisierung empfindlich genug ist.

1GHz=109Hztt109s

105st<104104105s


8

Vor 40 Jahren hatten Sie möglicherweise einen Computer, auf dem die CPU den Lautsprecher direkt steuerte. Diese Zeiten sind längst vorbei.

Möglicherweise haben Sie einen Computer mit einer primitiven Soundkarte. Eine solche Soundkarte hat einen Puffer für Stereo-Audio-Samples, dieser Puffer kann gefüllt werden, die Ausgabefunktion wird gestartet und die Soundkarte beginnt, Audio aus den Samples in ihren Puffern zu erzeugen, ohne dass die CPU etwas tun muss. Die CPU muss lediglich die Puffer mit weiteren Audio-Samples füllen, bevor sie leer ist. Wenn Sie einen 1-Megabyte-Puffer haben, sind das 250.000 Stereo-Samples in CD-Qualität, das sind ungefähr sechs Sekunden. Alle paar Sekunden muss die CPU diese Puffer erneut füllen.

In Wirklichkeit wird Ihr Computer etwas viel Fortgeschritteneres haben. Im Prinzip das gleiche, aber die Puffer können zum Beispiel direkt mit Ton im MP3- oder AAC-Format gefüllt werden, und die Soundkarte decodiert diese Daten selbst in Stereo-Samples. Höchstwahrscheinlich kann es so programmiert werden, dass alle Arten von unterschiedlichen Effekten erzeugt werden, von der Lautstärke über die Verbesserung der Klangqualität bis hin zur unabhängigen Änderung der Tonhöhe oder Geschwindigkeit, der Erzeugung von Surround-Sound usw.

Die CPU macht nicht viel, füllt nur von Zeit zu Zeit die Soundpuffer. Der Rest wird von etwas anderem erledigt. Wenn ich "Soundkarte" sage, sind diese natürlich von Soundkarten zu Chips auf einen winzigen Fleck Transistoren auf einem massiven Chip mit vielen verschiedenen Funktionen geschrumpft.

Einen Hersteller solcher Karten finden Sie unter https://en.wikipedia.org/wiki/Wolfson_Microelectronics als Ausgangspunkt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.