Почему воспроизведение звука не останавливает другие задачи?

10

Если процессоры могут выполнять одновременно только одну вещь, почему я могу непрерывно воспроизводить музыку и при этом выполнять другие задачи?

Я понимаю систему прерываний, но разве не нужно, чтобы процессор непрерывно обрабатывал звук, чтобы он не звучал нервно / неуверенно?

Я спрашиваю о базовой реализации, связан ли этот вопрос с многопоточностью? Как одноядерный, однопоточный процессор может достичь этой многозадачности?

Мечтать
источник
«Дрожь» я могу понять, но как звучит «запаздывание»? (PS, выход FM-тюнера с моего iPod nano отстает от аналогового FM-радио, настроенного на ту же радиостанцию, примерно на четверть секунды, но я не слышу этот лаг, если слушаю только iPod.)
Соломон Медленный
@jameslarge Если бы вы играли в видеоигру, было бы заметно что-то вроде задержки звука в четверть секунды. Аналогично для видеоконференций.
Дерек Элкинс покинул SE
3
Как указывает ответ Ариэля, даже довольно старый процессор обладает достаточной вычислительной мощностью для выполнения этой задачи. Тем не менее, я уверен, что эта задача в значительной степени выполнялась и продолжает выполняться аудиопроцессорами. Задача ЦП состоит в том, чтобы просто заполнить буферы аудиопроцессора, которые не требуют никакой «непрерывной» обработки ЦП, особенно для музыки, где все данные доступны заранее.
Дерек Элкинс покинул SE
Я бы выбрал DMAC, устройства обработки звуковых карт и буферы.
Зло

Ответы:

9

Поскольку процессор работает с фиксированными тактами, на самом деле ничто не является непрерывным, только потому, что дискретизация достаточно чувствительна.

Предположим, что тактовая частота вашего процессора составляет . Если центральный процессор обрабатывает аудио только по одному в тактовых циклах (и использует оставшиеся тактовые циклы для несвязанных задач), то у вас есть задержка в между всеми предварительно сформированными «заданиями обработки аудио» процессором (для простоты мы предполагаем, что процессор преформирует эту обработку, используя только один тактовый цикл).1GHz=109Hztt109s

Допустим, мы допускаем задержку в (люди слышат частоты в диапазоне от 20 Гц до 20 кГц, поэтому человеческий слух не будет чувствителен к такой задержке), тогда нам нужно , поэтому процессор может одновременно обрабатывать еще задач с задержкой .105st<104104105s

Ariel
источник
8

40 лет назад у вас мог быть компьютер, на котором центральный процессор напрямую управлял динамиком. Эти времена давно прошли.

У вас может быть компьютер с примитивной звуковой картой. Такая звуковая карта будет иметь буфер для стерео аудио сэмплов, этот буфер может быть заполнен, будет запущена функция вывода, и звуковая карта начнет генерировать аудио из сэмплов в своих буферах, без необходимости что-либо делать ЦПУ. Все, что нужно CPU, это заполнить буферы большим количеством аудиосэмплов, прежде чем он закончится. Если у вас есть один мегабайтный буфер, это 250 000 стерео сэмплов в качестве CD, это около шести секунд. Таким образом, каждые несколько секунд процессор должен снова заполнять эти буферы.

На самом деле ваш компьютер будет иметь что-то гораздо более продвинутое. В принципе то же самое, но буферы могут быть заполнены непосредственно звуком в формате mp3 или aac, например, и звуковая карта самостоятельно декодирует эти данные в стерео сэмплы. Скорее всего, он может быть запрограммирован на создание всех видов различных эффектов: от громкости звука, улучшения качества звука, независимой смены высоты и скорости звука, генерации объемного звука и так далее.

Процессор не делает очень много, просто заполняя звуковые буферы время от времени. Остальное сделано чем-то другим. Конечно, когда я говорю «звуковая карта», они сжимаются от звуковых карт к чипам к крошечному массиву транзисторов на массивном чипе с множеством различных функций.

Для одного производителя таких карт посмотрите https://en.wikipedia.org/wiki/Wolfson_Microelectronics в качестве отправной точки.

gnasher729
источник