การใช้ Radix-4 เร็วกว่าการแปลงรหัส Radix-2 FFT ที่เท่ากันหรือไม่? และถ้าเป็นเช่นนั้นทำไมมันจะเร็วขึ้น?
การใช้ Radix-4 เร็วกว่าการแปลงรหัส Radix-2 FFT ที่เท่ากันหรือไม่? และถ้าเป็นเช่นนั้นทำไมมันจะเร็วขึ้น?
คำตอบ:
มันขึ้นอยู่กับ. ในทางทฤษฎีคุณสามารถบันทึกการคูณด้วย radix-4 ได้เนื่องจาก radix-4 มีจำนวนของผีเสื้อ 1 / 4th และ 3 mpy + 8 เพิ่มต่อผีเสื้อ (ถ้ามีโครงสร้างที่เหมาะสม) และ radix 2 มี 1 mpy + 2 เพิ่มต่อผีเสื้อ .
ดังนั้นในแง่ของการทวีคูณมันจะดีขึ้นเล็กน้อย แต่ก็มีความซับซ้อนที่สูงขึ้นในแง่ของโครงสร้างโค้ดการจัดการข้อยกเว้นการจัดการค่าสัมประสิทธิ์การจัดการการลงทะเบียน
ดังนั้นมันจึงเป็นข้อได้เปรียบเฉพาะถ้าจำนวน mpy เป็นปัจจัย จำกัด ซึ่งสำหรับฮาร์ดแวร์ส่วนใหญ่ในทุกวันนี้ไม่ใช่กรณี
ที่นี่ ! คุณสามารถค้นหาคำอธิบายของความแตกต่างหลักระหว่างอัลกอริธึมสองประการสำหรับ FFT ในตอนท้ายของเอกสารมีบางตารางที่เป็นไปได้ที่จะทราบว่าหากขนาดของข้อมูลเพิ่มขึ้นประสิทธิภาพของ radix-4 fft จะดีกว่า radix-2
จำนวนสุทธิของการคูณและการเพิ่มเติมที่ฉันคิดว่าเหมือนกัน แต่ผีเสื้อ radix-4 สามารถทำได้ในหน่วยประมวลผลลงทะเบียนธนาคาร (ฉันคิดว่ามีการลงทะเบียนจุดลอยตัวที่แตกต่างกันประมาณ 16 รายการและคุณต้องการ 8 สำหรับชิ้นส่วนจริงและ imag ของค่า 4 ค่า, 2 รีจิสเตอร์สำหรับ twiddles บาปและโคไซน์และบางทีรีจิสเตอร์อื่นหรือสองค่าเพื่อลบล้าง) นี้เร็วกว่าการทำในหน่วยความจำ
ใน radix 2 จำนวนของตัวอย่างอยู่ในรูปของกำลังของ 2 กำลัง แต่ใน radix 4 จำนวนของตัวอย่างอยู่ในอำนาจของ 4