Kayan nokta donanımı içermeyen bir mimari üzerinde çalışıyorum, ancak yalnızca 16 bit ALU ve 40 bit MAC.Ne zaman CORDIC veya polinom yaklaşımı kullanmak daha verimli?
Bu mimarideki yazılımlarda 32 bit tek kesinlikli kayan nokta toplama/çıkarma, çarpma, kosinüs, sinüs, bölme, karekök ve aralık azaltma işlemlerini zaten uygulamıştım.
ilk Sonra kosinüs Polinom yaklaşımlar ve aralık sinüs fonksiyonları bir kosinüs ve sinüs fonksiyonu hayata "ARGUMENT REDUCTION FOR HUGE ARGUMENTS" by K.C. NG kağıt anlatılan yöntem kullanılarak aralığı azalma kullanılan kosinüs ve sinüs uygulamak için -pi/4 ile + pi/4. Hart, ve ark., "Bilgisayar Yaklaşımları" kitabına başvurdum. Polinomlar için.
Ayrıca CORDIC algoritmasını düşünmem gerektiğini duydum. Ancak, daha önce kullandığım yönteme göre daha fazla veya daha az verimli olup olmayacağını (çıktı, bellek yükü ve gereken talimat sayısı) bilen var mı diye merak ediyordum. Yazılım işlevlerimi, her bir çekirdek özelliğin yalnızca 128 kelimelik yönerge belleği ve 128 adet 16 bitlik bir 16 bit veri belleğinin bulunduğu çok çekirdekli bir mimaride uygulamıştım. Ayrıca kosinüs ve sinüs için CORDIC algoritmasının nasıl uygulanacağını araştırmayı denedim, ancak 32-bit kayan nokta uygulamaları için iyi bir kaynak bulamadım. Herhangi bir öneri var mı?
Teşekkür ederiz!
Mevcut uygulamanızla ilgili bir performans sorununuz var mı? –
Performans oldukça yavaş. Ayrıca bir yazılım kayan nokta çarpan veya toplayıcı veya benim için her ikisi de mevcut olsa bile, yazılım uygulamaları karşılaştırmak için gidiyorum. Aklıma her zaman sahip olduğum bir soru, ne CORDIC hakkında, ve bu oyuna nasıl giriyor? Bir seçenek olarak göz ardı etmeli miyim? Niye ya? 32-bit kayan nokta için bu soruyu cevaplamak için iyi bir kaynak bulamadım. – Veridian
Polinomları değerlendirmek için Horner'ı kullandınız mı? Hangi derece polinomları kullandınız? –