Если процессоры могут выполнять одновременно только одну вещь, почему я могу непрерывно воспроизводить музыку и при этом выполнять другие задачи?
Я понимаю систему прерываний, но разве не нужно, чтобы процессор непрерывно обрабатывал звук, чтобы он не звучал нервно / неуверенно?
Я спрашиваю о базовой реализации, связан ли этот вопрос с многопоточностью? Как одноядерный, однопоточный процессор может достичь этой многозадачности?
cpu
multi-tasking
Мечтать
источник
источник
Ответы:
Поскольку процессор работает с фиксированными тактами, на самом деле ничто не является непрерывным, только потому, что дискретизация достаточно чувствительна.
Предположим, что тактовая частота вашего процессора составляет . Если центральный процессор обрабатывает аудио только по одному в тактовых циклах (и использует оставшиеся тактовые циклы для несвязанных задач), то у вас есть задержка в между всеми предварительно сформированными «заданиями обработки аудио» процессором (для простоты мы предполагаем, что процессор преформирует эту обработку, используя только один тактовый цикл).1GHz=109Hz t ≈t⋅10−9s
Допустим, мы допускаем задержку в (люди слышат частоты в диапазоне от 20 Гц до 20 кГц, поэтому человеческий слух не будет чувствителен к такой задержке), тогда нам нужно , поэтому процессор может одновременно обрабатывать еще задач с задержкой .10−5s t<104 104 10−5s
источник
40 лет назад у вас мог быть компьютер, на котором центральный процессор напрямую управлял динамиком. Эти времена давно прошли.
У вас может быть компьютер с примитивной звуковой картой. Такая звуковая карта будет иметь буфер для стерео аудио сэмплов, этот буфер может быть заполнен, будет запущена функция вывода, и звуковая карта начнет генерировать аудио из сэмплов в своих буферах, без необходимости что-либо делать ЦПУ. Все, что нужно CPU, это заполнить буферы большим количеством аудиосэмплов, прежде чем он закончится. Если у вас есть один мегабайтный буфер, это 250 000 стерео сэмплов в качестве CD, это около шести секунд. Таким образом, каждые несколько секунд процессор должен снова заполнять эти буферы.
На самом деле ваш компьютер будет иметь что-то гораздо более продвинутое. В принципе то же самое, но буферы могут быть заполнены непосредственно звуком в формате mp3 или aac, например, и звуковая карта самостоятельно декодирует эти данные в стерео сэмплы. Скорее всего, он может быть запрограммирован на создание всех видов различных эффектов: от громкости звука, улучшения качества звука, независимой смены высоты и скорости звука, генерации объемного звука и так далее.
Процессор не делает очень много, просто заполняя звуковые буферы время от времени. Остальное сделано чем-то другим. Конечно, когда я говорю «звуковая карта», они сжимаются от звуковых карт к чипам к крошечному массиву транзисторов на массивном чипе с множеством различных функций.
Для одного производителя таких карт посмотрите https://en.wikipedia.org/wiki/Wolfson_Microelectronics в качестве отправной точки.
источник