Ses çalma neden diğer görevleri durdurmuyor?


10

İşlemciler bir seferde yalnızca bir şeyi yürütebilirlerse, nasıl olur da sürekli müzik çalabilirim ve yine de başka görevleri yürütebilirim?

Kesme sistemini anlıyorum, ancak CPU'nun titrek / laggy ses çıkarmaması için sürekli ses işlemesi gerekmez mi?

Temel uygulama hakkında soruyorum, bu soru çoklu iş parçacığı ile ilgili mi? 1 çekirdekli, 1 iş parçacıklı bir CPU bu çoklu görevi nasıl başarabilir?


"Jittery" Anlayabiliyorum, ama "laggy" neye benziyor? (PS, iPod nano'mdan gelen FM tuner çıkışı, aynı istasyona ayarlanmış bir analog FM radyonun çıkışını saniyenin dörtte biri kadar geciktiriyor, ancak yalnızca iPod'u dinlersem gecikmeyi duyamıyorum.)
Solomon Yavaş

@jameslarge Bir video oyunu oynuyorduysanız, çeyrek saniyelik bir gecikme sesi gibi bir şey son derece dikkat çekici olurdu. Benzer şekilde video konferans için.
Derek Elkins SE

3
Ariel'in cevabının işaret ettiği gibi, bu görevi yerine getirmek için oldukça eski bir CPU'da bile çok fazla işlem gücü var. Ancak, bu görevin büyük ölçüde ses yardımcı işlemcileri tarafından gerçekleştirildiğinden ve yürütülmeye devam ettiğinden eminim. CPU'nun işi daha sonra CPU tarafından herhangi bir "sürekli" işlem gerektirmeyen ses yardımcı işlemcisi arabelleklerini doldurmaktır, özellikle de tüm verilerin önceden mevcut olduğu müzik için.
Derek Elkins SE

DMAC, ses kartı işlem birimleri ve arabellekleri tercih ederim.
Kötülük

Yanıtlar:


9

CPU sabit saat döngülerinde çalıştığından, hiçbir şey sürekli değildir, sadece ayrıklaştırma yeterince hassas olduğu için öyle görünüyor.

CPU saat hızınızın olduğunu varsayalım . CPU, ses işlemeye yalnızca saat döngüsünde bir tane ayırırsa (ve ilgisiz görevler için kalan saat döngülerini kullanırsa), önceden oluşturulmuş her "ses işleme görevi" arasında gecikme olur cpu tarafından (basitlik için, cpu'nun bu işlemeyi yalnızca bir saat döngüsü kullanarak gerçekleştirdiğini varsayıyoruz).t t 10 - 9 s1GHz=109Hztt109s

Diyelim ki gecikmeye izin veriyoruz (insanlar 20Hz ila 20Khz aralığında frekanslar duyuyor, bu yüzden insan işitme bu gecikmeye duyarlı olmayacak), o zaman , böylece CPU gecikmeyi korurken aynı anda daha fazla görevi gerçekleştirebilir .t < 10 4 10 4 10 - 5 s105st<104104105s


8

40 yıl önce, CPU'nun hoparlörü doğrudan kontrol ettiği bir bilgisayarınız olabilirdi. O zamanlar çoktan bitti.

İlkel ses kartı olan bir bilgisayarınız olabilir. Böyle bir ses kartında stereo ses örnekleri için bir tampon bulunur, bu tampon doldurulabilir, çıkış fonksiyonu başlatılır ve ses kartı CPU hiçbir şey yapmadan tamponlarındaki numunelerden ses üretmeye başlar. CPU'nun yapması gereken tek şey, tamponları bitmeden daha fazla ses örneğiyle doldurmak. Bir megabayt tampon belleğiniz varsa, bu CD kalitesinde 250.000 stereo örnektir, yaklaşık altı saniyedir. Yani birkaç saniyede bir, CPU bu tamponları tekrar doldurmak zorunda.

Gerçekte, bilgisayarınızda çok daha gelişmiş bir şey olacaktır. Prensip olarak aynıdır, ancak tamponlar doğrudan mp3 veya aac formatında sesle doldurulabilir ve ses kartı bu verileri kendi başına stereo örneklere çözer. Büyük olasılıkla ses hacminden, ses kalitesini iyileştirmek, ses perdesini veya hızı bağımsız olarak değiştirmek, surround ses üretmek vb.

CPU çok fazla bir şey yapmıyor, sadece zaman zaman ses tamponlarını dolduruyor. Gerisi başka bir şey tarafından yapılır. Tabii ki "ses kartı" dediğimde, bunlar ses kartlarından çiplere, çok sayıda farklı işlevselliğe sahip büyük bir çip üzerinde küçük bir transistör lekesine küçüldü.

Bu tür kartların bir üreticisi için, başlangıç ​​noktası olarak https://en.wikipedia.org/wiki/Wolfson_Microelectronics adresine bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.