Mengapa tidak memutar audio menghentikan tugas lain?

10

Jika prosesor hanya dapat menjalankan satu hal pada satu waktu, bagaimana mungkin saya dapat memutar musik terus menerus dan masih dapat menjalankan tugas lain?

Saya mengerti sistem interupsi, tetapi bukankah perlu bahwa CPU terus-menerus memproses audio agar tidak terdengar gelisah / lamban?

Saya bertanya tentang implementasi yang mendasarinya, apakah pertanyaan ini terkait dengan multi-threading? Bagaimana cara 1-core, 1-threaded CPU dapat mencapai multitasking ini?

Mimpikan itu
sumber
"Jittery" Aku bisa mengerti, tapi seperti apa suara "laggy"? (PS, Output tuner FM dari iPod nano saya memperlambat output dari radio FM analog yang disetel ke stasiun yang sama sekitar seperempat detik, tetapi saya tidak dapat mendengar lag jika saya mendengarkan iPod sendirian.)
Solomon Slow
@ jameslarge Jika Anda memainkan video game, sesuatu seperti lag seperempat detik dalam suara akan sangat terlihat. Demikian pula untuk konferensi video.
Derek Elkins meninggalkan SE
3
Seperti yang ditunjukkan jawaban Ariel, ada banyak kekuatan pemrosesan bahkan dalam CPU yang agak lama untuk menangani tugas ini. Namun, saya cukup yakin bahwa tugas ini sebagian besar telah dan terus ditangani oleh prosesor audio. Tugas CPU kemudian hanya mengisi buffer audio coprocessor yang tidak memerlukan pemrosesan "terus menerus" oleh CPU, terutama untuk musik di mana semua data tersedia dimuka.
Derek Elkins meninggalkan SE
Saya akan memilih DMAC, unit pemrosesan kartu suara dan buffer.
Evil

Jawaban:

9

Karena CPU bekerja dalam siklus clock tetap, tidak ada yang benar-benar kontinu, sepertinya begitu karena diskritisasi cukup sensitif.

Misalkan laju jam CPU Anda adalah . Jika CPU hanya mencurahkan satu di siklus clock untuk pengolahan audio (dan memanfaatkan siklus jam tersisa untuk tugas yang tidak berhubungan) maka Anda memiliki keterlambatan antara setiap "tugas pemrosesan audio" preformed oleh cpu (untuk kesederhanaan, kami menganggap cpu melakukan preforms pemrosesan ini hanya menggunakan satu siklus clock).1GHz=109Hztt109s

Katakanlah kita mengizinkan penundaan (manusia mendengar frekuensi dalam kisaran 20Hz hingga 20KHz, sehingga pendengaran manusia tidak akan peka terhadap keterlambatan tersebut), maka kita perlu meminta , sehingga CPU dapat menangani tugas sekaligus secara bersamaan sambil menunda .105st<104104105s

Ariel
sumber
8

40 tahun yang lalu, Anda mungkin memiliki komputer di mana CPU mengontrol speaker secara langsung. Masa-masa itu sudah berakhir, dulu sekali.

Anda mungkin memiliki komputer dengan kartu suara primitif. Kartu suara semacam itu akan memiliki buffer untuk sampel audio stereo, buffer itu dapat diisi, fungsi output akan dimulai, dan kartu suara mulai menghasilkan audio dari sampel dalam buffer, tanpa CPU harus melakukan apa pun. Yang perlu dilakukan CPU adalah mengisi buffer dengan lebih banyak sampel audio sebelum kehabisan. Jika Anda memiliki buffer satu megabyte, itu adalah 250.000 sampel stereo dalam kualitas CD, itu sekitar enam detik. Jadi setiap beberapa detik, CPU harus mengisi buffer ini lagi.

Pada kenyataannya, komputer Anda akan memiliki sesuatu yang jauh lebih maju. Pada prinsipnya sama, tetapi buffer dapat diisi langsung dengan suara dalam format mp3 atau aac, misalnya, dan kartu suara akan memecahkan kode data ini ke sampel stereo sendiri. Kemungkinan besar dapat diprogram untuk menghasilkan semua jenis efek yang berbeda, dari volume suara, meningkatkan kualitas suara, mengubah nada atau kecepatan secara mandiri, menghasilkan suara surround dan sebagainya.

CPU tidak melakukan banyak hal, hanya mengisi buffer suara dari waktu ke waktu. Sisanya dilakukan oleh sesuatu yang lain. Tentu saja ketika saya mengatakan "kartu suara", ini telah menyusut dari kartu suara ke chip menjadi flek kecil transistor pada chip besar dengan banyak fungsi yang berbeda.

Untuk satu pembuat kartu semacam itu, lihat https://en.wikipedia.org/wiki/Wolfson_Microelectronics sebagai titik awal.

gnasher729
sumber