Por que a reprodução de áudio não interrompe outras tarefas?

10

Se os processadores puderem executar apenas uma coisa de cada vez, como posso tocar música continuamente e ainda poder executar outras tarefas?

Entendo o sistema de interrupção, mas não é necessário que a CPU processe continuamente o áudio para que não pareça instável / lento?

Estou perguntando sobre a implementação subjacente. Esta questão está relacionada ao multiencadeamento? Como uma CPU de 1 núcleo e 1 thread consegue atingir essa multitarefa?

Sonhe
fonte
"Jittery" eu posso entender, mas como é "lag"? (PS, a saída do sintonizador de FM do meu iPod nano fica abaixo da saída de um rádio FM analógico sintonizado na mesma estação em cerca de um quarto de segundo, mas não consigo ouvir o atraso se ouvir apenas o iPod.)
Solomon Slow
@jameslarge Se você estivesse jogando videogame, algo como um atraso de quarto de segundo no som seria extremamente perceptível. Da mesma forma para videoconferência.
Derek Elkins deixou o SE
3
Como a resposta de Ariel aponta, há bastante poder de processamento em uma CPU bastante antiga para lidar com essa tarefa. No entanto, tenho certeza de que essa tarefa foi em grande parte e continua sendo tratada pelos coprocessadores de áudio. O trabalho da CPU é, então, simplesmente preencher os buffers dos coprocessadores de áudio, o que não requer processamento "contínuo" da CPU, especialmente para músicas em que todos os dados estão disponíveis antecipadamente.
Derek Elkins deixou o SE
Eu optaria por DMAC, unidades de processamento de placas de som e buffers.
Mal

Respostas:

9

Como a CPU trabalha em ciclos de clock fixos, nada é realmente contínuo, apenas parece porque a discretização é sensível o suficiente.

Suponha que a taxa de clock da CPU seja . Se a CPU dedicar apenas um ciclo de relógio em ao processamento de áudio (e utilizar os ciclos de relógio restantes para tarefas não relacionadas), haverá um atraso de entre todas as "tarefas de processamento de áudio" pré-formadas pela CPU (para simplificar, assumimos que a CPU pré-forma esse processamento usando apenas um ciclo de clock).1GHz=109Hztt109s

Digamos que permitimos um atraso de (os seres humanos ouvem frequências na faixa de 20Hz a 20Khz, para que a audição humana não seja sensível a esse atraso), então precisamos exigir , para que a CPU possa manipular simultaneamente mais tarefas, mantendo um atraso de .105st<104104105s

Ariel
fonte
8

Há 40 anos, você pode ter um computador em que a CPU controlava o alto-falante diretamente. Esses tempos acabaram, há muito tempo.

Você pode ter um computador com uma placa de som primitiva. Essa placa de som terá um buffer para amostras de áudio estéreo, esse buffer poderá ser preenchido, a função de saída será iniciada e a placa de som começará a gerar áudio a partir das amostras em seus buffers, sem que a CPU precise fazer nada. Tudo o que a CPU precisa fazer é preencher os buffers com mais amostras de áudio antes que ele acabe. Se você possui um buffer de um megabyte, são 250.000 amostras estéreo com qualidade de CD, são cerca de seis segundos. Portanto, a cada poucos segundos, a CPU precisa preencher esses buffers novamente.

Na realidade, seu computador terá algo muito mais avançado. Em princípio, o mesmo, mas os buffers podem ser preenchidos diretamente com som no formato mp3 ou aac, por exemplo, e a placa de som decodificará esses dados em amostras estéreo por conta própria. Provavelmente, ele pode ser programado para produzir todos os tipos de efeitos diferentes, desde o volume do som, melhorando a qualidade do som, alterando o tom ou a velocidade independentemente, gerando som surround e assim por diante.

A CPU não faz muito, apenas preenchendo os buffers de som de tempos em tempos. O resto é feito por outra coisa. É claro que quando digo "placa de som", elas diminuíram de placas de som para chips até um pequeno fragmento de transistores em um chip massivo com várias funcionalidades diferentes.

Para um fabricante de tais cartões, consulte https://en.wikipedia.org/wiki/Wolfson_Microelectronics como ponto de partida.

gnasher729
fonte