Perché la riproduzione dell'audio non interrompe altre attività?


10

Se i processori possono eseguire solo una cosa alla volta, come mai posso riprodurre la musica continuamente ed essere ancora in grado di eseguire altre attività?

Capisco il sistema di interruzione, ma non è necessario che la CPU elabori continuamente l'audio affinché non sembri instabile / lento?

Sto chiedendo l'implementazione sottostante, questa domanda è correlata al multi-threading? In che modo una CPU a 1 core e 1 thread è in grado di raggiungere questo multitasking?


"Jittery" Posso capire, ma come suona "laggy"? (PS, l'uscita del sintonizzatore FM dal mio iPod nano è in ritardo rispetto all'uscita di una radio FM analogica sintonizzata sulla stessa stazione di circa un quarto di secondo, ma non riesco a sentire il ritardo se ascolto l'iPod da solo.)
Solomon Slow

@jameslarge Se stavi giocando a un videogioco, qualcosa come un ritardo di un quarto di secondo nel suono sarebbe estremamente evidente. Allo stesso modo per le videoconferenze.
Derek Elkins lasciò SE

3
Come sottolinea la risposta di Ariel, c'è molta potenza di elaborazione anche in una CPU piuttosto vecchia per gestire questo compito. Tuttavia, sono abbastanza sicuro che questo compito sia stato in gran parte svolto e continui ad essere gestito da coprocessori audio. Il compito della CPU è quindi quello di riempire semplicemente i buffer dei coprocessori audio che non richiedono alcuna elaborazione "continua" da parte della CPU, specialmente per la musica in cui tutti i dati sono disponibili in anticipo.
Derek Elkins lasciò SE

Opterei per DMAC, unità di elaborazione della scheda audio e buffer.
Evil

Risposte:


9

Poiché la CPU funziona con cicli di clock fissi, nulla è realmente continuo, sembra solo perché la discretizzazione è abbastanza sensibile.

1GHz=109Hztt10-9S

10-5St<10410410-5S


8

40 anni fa, potresti aver avuto un computer in cui la CPU controllava direttamente l'altoparlante. Quei tempi sono finiti, molto tempo fa.

Potresti avere un computer con una scheda audio primitiva. Una tale scheda audio avrà un buffer per i campioni audio stereo, quel buffer può essere riempito, la funzione di uscita verrà avviata e la scheda audio inizierà a generare audio dai campioni nei suoi buffer, senza che la CPU debba fare nulla. Tutto quello che la CPU deve fare è riempire i buffer con più campioni audio prima che si esauriscano. Se hai un buffer da un megabyte, sono 250.000 campioni stereo in qualità CD, sono circa sei secondi. Quindi, ogni pochi secondi, la CPU deve riempire nuovamente questi buffer.

In realtà, il tuo computer avrà qualcosa di molto più avanzato. In linea di principio lo stesso, ma i buffer possono essere riempiti direttamente con l'audio in formato mp3 o aac, ad esempio, e la scheda audio decodificherà questi dati in campioni stereo da soli. Molto probabilmente può essere programmato per produrre tutti i tipi di effetti diversi, dal volume del suono, migliorando la qualità del suono, modificando il tono o la velocità in modo indipendente, generando il suono surround e così via.

La CPU non fa molto, riempie di tanto in tanto i buffer audio. Il resto è fatto da qualcos'altro. Ovviamente quando dico "scheda audio", queste si sono ridotte da schede audio a chip a un piccolo granello di transistor su un chip enorme con molte funzionalità diverse.

Per un produttore di tali carte, guarda https://en.wikipedia.org/wiki/Wolfson_Microelectronics come punto di partenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.