Dlaczego odtwarzanie dźwięku nie zatrzymuje innych zadań?

10

Jeśli procesory mogą wykonywać tylko jedną rzecz naraz, to dlaczego mogę ciągle odtwarzać muzykę i nadal móc wykonywać inne zadania?

Rozumiem system przerwań, ale czy nie jest konieczne, aby procesor nieprzerwanie przetwarzał dźwięk, aby nie wydawał się roztrzęsiony / opóźniony?

Pytam o implementację, czy to pytanie dotyczy wielowątkowości? W jaki sposób 1-rdzeniowy, 1-wątkowy procesor może osiągnąć tę wielozadaniowość?

Marzyć
źródło
„Roztrzęsiony” Rozumiem, ale jak brzmi „leniwy”? (PS, wyjście tunera FM z mojego iPoda nano opóźnia wyjście analogowego radia FM dostrojonego do tej samej stacji o około ćwierć sekundy, ale nie słyszę opóźnienia, jeśli słucham samego iPoda.)
Solomon Slow
@jameslarge Gdy grasz w grę wideo, zauważalne jest coś w rodzaju kwadransowego opóźnienia dźwięku. Podobnie w przypadku wideokonferencji.
Derek Elkins opuścił SE
3
Jak wskazuje odpowiedź Ariel, nawet dość stary procesor jest w stanie sprostać temu zadaniu. Jestem jednak całkiem pewien, że to zadanie było i nadal jest obsługiwane przez koprocesory audio. Zadaniem procesora jest więc po prostu wypełnienie buforów koprocesorów audio, które nie wymagają żadnego „ciągłego” przetwarzania przez procesor, szczególnie w przypadku muzyki, w której wszystkie dane są dostępne z góry.
Derek Elkins opuścił SE
Zdecydowałbym się na DMAC, procesory kart dźwiękowych i bufory.
Zły

Odpowiedzi:

9

Ponieważ procesor pracuje w stałych cyklach zegara, nic nie jest naprawdę ciągłe, wydaje się, że tak, ponieważ dyskretyzacja jest wystarczająco czuła.

1GHz=109Hztt109s

105st<104104105s

Ariel
źródło
8

40 lat temu mógłbyś mieć komputer, na którym procesor bezpośrednio kontrolował głośnik. Te czasy już dawno minęły.

Być może masz komputer z prymitywną kartą dźwiękową. Taka karta dźwiękowa będzie miała bufor dla próbek audio stereo, bufor ten może zostać wypełniony, funkcja wyjściowa zostanie uruchomiona, a karta dźwiękowa zacznie generować dźwięk z próbek w swoich buforach, bez konieczności wykonywania przez procesor CPU. Wszystko, co CPU musi zrobić, to wypełnić bufory większą liczbą próbek audio, zanim się skończy. Jeśli masz bufor o pojemności jednego megabajta, to 250 000 próbek stereo w jakości CD, to około sześciu sekund. Co kilka sekund procesor musi ponownie wypełnić te bufory.

W rzeczywistości Twój komputer będzie miał coś znacznie bardziej zaawansowanego. Zasadniczo to samo, ale bufory mogą być wypełniane bezpośrednio na przykład dźwiękiem w formacie mp3 lub aac, a karta dźwiękowa samodzielnie dekoduje te dane do próbek stereo. Najprawdopodobniej można go zaprogramować do wytwarzania różnego rodzaju efektów, od głośności dźwięku, poprawy jakości dźwięku, niezależnej zmiany wysokości lub prędkości, generowania dźwięku przestrzennego i tak dalej.

Procesor niewiele robi, tylko od czasu do czasu wypełnia bufory dźwiękowe. Resztę robi coś innego. Oczywiście, kiedy mówię „karta dźwiękowa”, skurczyły się one od kart dźwiękowych do układów scalonych do niewielkiego kawałka tranzystorów na ogromnym układzie z wieloma różnymi funkcjami.

Jeśli chodzi o jednego producenta takich kart, patrz punkt początkowy na https://en.wikipedia.org/wiki/Wolfson_Microelectronics .

gnasher729
źródło