เหตุใดการเล่นเสียงจึงไม่หยุดงานอื่น ๆ


10

หากโปรเซสเซอร์สามารถดำเนินการเพียงครั้งเดียวเท่านั้นทำไมฉันจึงสามารถเล่นเพลงอย่างต่อเนื่องและยังสามารถทำงานอื่นได้

ฉันเข้าใจระบบขัดจังหวะ แต่ไม่ต้องการให้ CPU ประมวลผลเสียงอย่างต่อเนื่องเพื่อไม่ให้เสียงกระวนกระวายใจหรือล้าหลัง?

ฉันถามเกี่ยวกับการใช้งานพื้นฐานคำถามนี้เกี่ยวข้องกับมัลติเธรดหรือไม่ ซีพียู 1 คอร์ที่มี 1 เธรดสามารถทำงานมัลติทาสก์นี้ได้อย่างไร


"ใจสั่น" ฉันเข้าใจได้ แต่เสียง "ล้าหลัง" เป็นอย่างไร (PS, เอาต์พุต FM จูนเนอร์จาก iPod nano ของฉันล่าช้าเอาท์พุทของวิทยุ FM แบบอะนาล็อกที่ปรับไปยังสถานีเดียวกันประมาณหนึ่งในสี่ของวินาที แต่ฉันไม่ได้ยินความล่าช้าถ้าฉันฟัง iPod เพียงอย่างเดียว)
โซโลมอนช้า

@james large หากคุณเล่นวิดีโอเกมสิ่งที่ดูเหมือนความล่าช้าของเสียงในไตรมาสที่สองจะเห็นได้ชัดเจนมาก ในทำนองเดียวกันสำหรับการประชุมทางวิดีโอ
Derek Elkins ออกจาก SE

3
เมื่อคำตอบของ Ariel ชี้ให้เห็นว่ามีพลังในการประมวลผลมากมายแม้กระทั่งซีพียูที่ค่อนข้างเก่าสำหรับจัดการงานนี้ อย่างไรก็ตามฉันค่อนข้างแน่ใจว่างานนี้ได้รับการจัดการส่วนใหญ่และยังคงจัดการโดยตัวประมวลผลเสียง จากนั้นงานของ CPU คือเพียงเติมบัฟเฟอร์ตัวประมวลผลเสียงซึ่งไม่ต้องการการประมวลผล "ต่อเนื่อง" โดย CPU โดยเฉพาะอย่างยิ่งสำหรับเพลงที่มีข้อมูลทั้งหมดอยู่ตรงหน้า
Derek Elkins ออกจาก SE

ฉันจะเลือกใช้ DMAC หน่วยประมวลผลการ์ดเสียงและบัฟเฟอร์
Evil

คำตอบ:


9

เนื่องจากซีพียูทำงานในรอบสัญญาณนาฬิกาตายตัวไม่มีอะไรต่อเนื่องจริงๆดูเหมือนจะเป็นเช่นนั้นเพราะการแยกส่วนนั้นไวพอ

สมมติว่าอัตรานาฬิกา CPU ของคุณคือ1ถ้า CPU เพียงอุทิศหนึ่งในรอบนาฬิกาเพื่อการประมวลผลเสียง (และใช้ส่วนที่เหลืออีกรอบนาฬิกาสำหรับงานที่ไม่เกี่ยวข้องกัน) แล้วคุณมีความล่าช้าของระหว่างทุกงาน "การประมวลผลเสียง" preformed โดย cpu (เพื่อความง่ายเราสันนิษฐานว่า cpu preforms การประมวลผลนี้ใช้เพียงหนึ่งรอบสัญญาณนาฬิกา)1GHz=109Hztt109s

ให้บอกว่าเราอนุญาตให้มีการหน่วงเวลา (มนุษย์ได้ยินความถี่ในช่วง 20Hz ถึง 20Khz ดังนั้นการได้ยินของมนุษย์จะไม่ไวต่อความล่าช้าดังกล่าว) จากนั้นเราต้องใช้ , เพื่อให้ซีพียูสามารถจัดการพร้อมกันงานมากขึ้นขณะที่การรักษาความล่าช้าของ s105st<104104105s


8

40 ปีที่แล้วคุณอาจมีคอมพิวเตอร์ที่ซีพียูควบคุมลำโพงโดยตรง เวลาเหล่านั้นจบไปนานแล้ว

คุณอาจมีคอมพิวเตอร์ที่มีการ์ดเสียงดั้งเดิม การ์ดเสียงดังกล่าวจะมีบัฟเฟอร์สำหรับตัวอย่างเสียงสเตอริโอซึ่งสามารถเติมบัฟเฟอร์นั้นได้ฟังก์ชั่นเอาต์พุตจะเริ่มขึ้นและการ์ดเสียงจะเริ่มสร้างเสียงจากตัวอย่างในบัฟเฟอร์โดยไม่มี CPU ทำอะไรเลย CPU ทั้งหมดที่ต้องทำคือเติมบัฟเฟอร์ด้วยตัวอย่างเสียงเพิ่มเติมก่อนที่จะหมด หากคุณมีบัฟเฟอร์หนึ่งเมกะไบต์นั่นคือตัวอย่างสเตอริโอ 250,000 ตัวอย่างในคุณภาพซีดีนั่นคือประมาณหกวินาที ดังนั้นทุกๆสองสามวินาที CPU จะต้องเติมบัฟเฟอร์เหล่านี้อีกครั้ง

ในความเป็นจริงคอมพิวเตอร์ของคุณจะมีอะไรที่ล้ำสมัยกว่ามาก โดยหลักการแล้วจะเหมือนกัน แต่บัฟเฟอร์สามารถเติมโดยตรงด้วยเสียงในรูปแบบ mp3 หรือ aac ตัวอย่างเช่นและการ์ดเสียงจะถอดรหัสข้อมูลนี้เป็นตัวอย่างสเตอริโอด้วยตัวเอง มีแนวโน้มมากที่สุดที่จะสามารถตั้งโปรแกรมให้สร้างเอฟเฟกต์ต่าง ๆ ได้ทุกประเภทตั้งแต่ระดับเสียงการปรับปรุงคุณภาพเสียงการเปลี่ยนระดับเสียงหรือความเร็วอย่างอิสระสร้างเสียงเซอร์ราวด์เป็นต้น

CPU ไม่ได้ทำอะไรมากเพียงเติมบัฟเฟอร์เสียงเป็นครั้งคราว ส่วนที่เหลือจะทำอย่างอื่น แน่นอนเมื่อฉันพูดว่า "การ์ดเสียง" สิ่งเหล่านี้หดตัวจากการ์ดเสียงไปยังชิปไปยังชิปเล็ก ๆ ของทรานซิสเตอร์บนชิปขนาดใหญ่ที่มีฟังก์ชั่นต่าง ๆ มากมาย

สำหรับผู้ผลิตการ์ดดังกล่าวรายหนึ่งให้ดูที่https://en.wikipedia.org/wiki/Wolfson_Microelectronicsเป็นจุดเริ่มต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.