Floating Point Nedir? Nerede kullanılır ?

Başlatan baran123, 17 Kasım 2016, 19:58:41

baran123

Özellikle STM32 işlemcilerde görüyorum. FPU birimleri var.
Bu birim tam olarak ne işe yarar ?

Zoroaster

Floating Point sayılar üzerinde aritmetik işlemler yapıyor.

Seytan deliginden kacti.

DaRt

Stm32 için soruyorum. Peki fpu birimi işlem yaparken mcu rutin işlerine devam eder mi? yoksa fpu işini bitirene kadar bekler mi? Ayrıca floating point sayılarla yapılan işlem fpu ile yapılırsa daha mı kısa sürer. Yani fpu ne avantaj sağlar bize?

Zoroaster

Floating point sayıları FPU ünitesi olmadan işlemeye kalkarsan bir ton koddan oluşan fonksiyonlar yazman gerekir. Bu rutinlerin işleme süresi uzun olur. FPU bu işleri çok hızlı yapar.
Seytan deliginden kacti.

mert3162

Alıntı yapılan: DaRt - 17 Kasım 2016, 20:26:41
Stm32 için soruyorum. Peki fpu birimi işlem yaparken mcu rutin işlerine devam eder mi? yoksa fpu işini bitirene kadar bekler mi? Ayrıca floating point sayılarla yapılan işlem fpu ile yapılırsa daha mı kısa sürer. Yani fpu ne avantaj sağlar bize?

Gördüğüm en iyi 10 soru içine girer

Alıntı yapılan: Zoroaster - 17 Kasım 2016, 20:35:31
Floating point sayıları FPU ünitesi olmadan işlemeye kalkarsan bir ton koddan oluşan fonksiyonlar yazman gerekir. Bu rutinlerin işleme süresi uzun olur. FPU bu işleri çok hızlı yapar.

Zira cevapta öyle

Hocam pic'ti ardunio'ydu derken günümüzde kullanılabilitesi en yüksek kaliteli arm kart STM32 midir öğrenmeyi düşünmeye başladım.
|^^^^^^^^^^^^\ ||\
|__PICPROJE.ORG __
||'""|""\___
| _____________ l | |__|__|___| )
(@!)!(@)"""""**|(@) (@)****|(@)---------

 Üstadlarım nonstradam & Logan

F493

Selam,

Floating Point demek noktalı yani noktadan sonra onlar, yüzler, binler vs olan sayı demektir.

örneğin, 123.8545

   FPU olan bir işlemcide donanımsal bir birim vardır(Hardware). Bu ünitenin olmadığı bir işlemcide noktalı sayılarla çalışmak bütün yükü işlemciye bindirir.

Misal PID kontrol sistemi yazdınız.

burada çarpma , toplama işlemi yapmanız gerekli ve FPU yoksa çok uzun sürer bu işlem. Fakat FPU varsa bir kaç saykılda bu işlem yapılır. int de oldugu gibi.

Bu da özellikle hassas hesaplamalarda çok fazla kolaylık sağlar.

Esen kalın.




Zoroaster

Aslında PID gibi işlerde FPU çok da lazım değil.

FPU'ya daha çok, aralığı (dynamic range) çok geniş sayılarla işlem yaparken ihtiyaç duyuluyor.

Fix point aritmetik ile gayet hızlı PID işletilir.

Fakat iş 0.3785478573485 +-*/ 326426467241 E20 olunca fix point işlemler can sıkıcı hale gelir.
Seytan deliginden kacti.

MC_Skywalker

x87'ler için sadce FPU demek yanlış olur. x87'ler matematik işlemcidir ve x86 mimarisinin FPU içereni demek yanlış olmaz. Yani kendi ALU, PC (Program counter), Adres/Code decoder vb. birimleri vardır. 80386 ile FPU birimi olan CISC CPU'lar üretilmeye başmış ve @CoDeR'in de bahsetmiş olduğu gibi SX/DX ayrımı ortaya çıkmıiştır.

Pentium ile sadece SX/DX kalkmış, Pemtium II ile CPU ve L3 cache bellekler bir PCB de toplanıp modül olmuştur. Daha sonra L3 cache bellekler CPU paketine girmiştir.

baran123

Hocam özellikle şu quadcopterlerde ölçülen ACC+GYR değerlerine göre yapılan açı hesaplamaları veya trigonometrik log, ln vs gibi işlemlerde FPU bize katkı sağlayabilir dimi ?
Peki bunu aktive edip direk olarak float tanımlarsam derleyici bunu anlayıp kodları ona göre mi üretiyor ?
Benim herhangi ekstra bir komut kullanmama gerek var mı ?

baran123


Zoroaster

Alıntı yapılan: DaRt - 17 Kasım 2016, 20:26:41
Stm32 için soruyorum. Peki fpu birimi işlem yaparken mcu rutin işlerine devam eder mi? yoksa fpu işini bitirene kadar bekler mi? .....

FPU komutlarını hiç kullanmadığım benim de kafama takıldı.

Evet aynen işlemci kendi hesaplıyor gibi FPU'nun sonucu hesaplamasını bekliyor.

Alıntı Yap• Negate of a float or of multiple floats (1 cycle)
• Addition (1 cycle)
• Subtraction (1 cycle)
• Multiply, multiply accumulate/subtract, multiply accumulate/subtract, then negate (3 cycles)
• Divide (14 cycles)
• Square root (14 cycles)

Örnek olarak Fractal hesabında 13 kata varan hızlanmadan bahsediliyor.

http://www.st.com/content/ccc/resource/technical/document/application_note/10/6b/dc/ea/5b/6e/47/46/DM00047230.pdf/files/DM00047230.pdf/jcr:content/translations/en.DM00047230.pdf
Seytan deliginden kacti.

muhittin_kaplan

@baran123 orada soft u vermiş sanırım. yani Hardware i kullanmıyor sanırım.

engerex

Alıntı yapılan: Zoroaster - 17 Kasım 2016, 23:15:30
FPU komutlarını hiç kullanmadığım benim de kafama takıldı.

Evet aynen işlemci kendi hesaplıyor gibi FPU'nun sonucu hesaplamasını bekliyor.

Örnek olarak Fractal hesabında 13 kata varan hızlanmadan bahsediliyor.

http://www.st.com/content/ccc/resource/technical/document/application_note/10/6b/dc/ea/5b/6e/47/46/DM00047230.pdf/files/DM00047230.pdf/jcr:content/translations/en.DM00047230.pdf

İşlem cycle değerleri işlenen değere göre farklılık gösteriyor olmalı.

muhittin_kaplan

hadi deneyelim.
Aynı Float işlemi, noFPU,softFPU ve hard FPU yapalım. dwt ile kaç cycle tuttuğunu ölçelim.

Zoroaster

No FPU ile soft FPU aynı anlama gelmiyormu?
Seytan deliginden kacti.