arm w C czy 51 w asm

Loading thread data ...
Reply to
Bogdan Gutknecht
Reply to
Bogdan Gutknecht

Obecne kompilatory mają na tyle rozwinięte algorytmy optymalizacji, że bardzo często potrafią na podstawie języka C wygenerować kod znacznie szybszy, niż analogiczny napisany w assemblerze przez nawet bardzo doświadczoną osobę. Oczywiście, krytyczne pod względem wydajności funkcje zawsze można zaimplementować wstawkami w asm. Pisząc w języku C także jednak trzeba myśleć o optymalizowaniu - przerażające jest, ile osób nie wie na przykład co to są funkcje typu inline.

Porównywanie tutaj wydajności C51 i ARM nie ma sensu, ponieważ to zupełnie inne światy.

Reply to
voices

na jakims Pentium, o ile "doswiadczona osoba" nie ma pojecia o niuansach kolejek, cache, pipelineningu itp.

Arm chyba tych klopotow nie ma, a 51 to z kolei klopot dla kompilatora. Co szybsze .. stawiam na arm, ale nielicznych programach kompilator moze dac d*.

J.

Reply to
J.F.

ARM bedzie szybszy. Obecne kompilatory C bardzo dobrze optymalizuja kod wynikowy tak ze nie jest on znaczaco gorszy niz wysmazony recznie w asemblerze. Natomiast porownanie samego jadra ARM z np. rozkazami warunkowymi z dziadkiem '51 juz wyglada niezle. Dodatkowo AT89S52 z kwarcem 24MHz ma wydajnosc 2 MIPS (najkrotszy rozkaz trwa 12 taktow zegara) :-( a AT91RM9200 (ARM Atmela) taktowany zegarem 200 MHz ma wydajnosci 200 MIPS (wiekszosc rozkazow 1-cyklowa) czyli 100x wieksza. :-)

Wniosek: jezeli potrzebujesz wydajnosci to zastosuj ARMa i sie nawet nie zastanawiaj dluzej. Nawet stosunkowo tani AT91SAM7S64 wydoli 55 MIPS @

55 MHz.
Reply to
Adam Dybkowski

Racja, ale też nie można bezpośrednio porównywać MIPS'ów procesorów RISC i CISC - czasem, aby dokonać tego co robi jedna instrukcja procesora CISC, procesor RISC potrzebuje kilku instrukcji .. Co oczywiście nie zmienia faktu, że ARM wypada nieporównywalnie lepiej.

Reply to
voices

taaa - Reduced to on naprawde jest :-)

J.

Reply to
J.F.

Dlatego podstawowe powinno być porównanie możliwości samego jądra procesora. Dla '51 dodanie kilku liczb wykorzystywanych często w pętli to mordęga - każdą trzeba przepchnąć przez akumulator i spowrotem do rejestru. ARM zrobi to bez bólu na dowolnym z kilkunastu rejestrów (ma

16 ale w to się wlicza SP i PC). Jak robisz operacje na liczbach 16- lub 32-bitowych to już w ogóle '51 przegrywa z kretesem a AVR jest niewiele lepszy. Natomiast w ARMach zdecydowanie najbardziej podobają mi się rozkazy warunkowe: otóż prawie każdą instrukcję można wykonać (lub nie) w zależności od stanu kilku flag procesora, do tego dla [prawie] każdej instrukcji można określić, czy ma zmieniać flagi procesora, czy w ogóle ich nie ruszać. Niby prosty pomysł, ale zabiera kilka bitów z kodu każdego rozkazu i dlatego dopiero w 32-bitowym ARMie takie rozwiązanie jest możliwe. Kod wynikowy dla ARMa jest najczęściej dłuższy niż dla AVRa czy '51 bo rozkazy mają po 32 bity, ale jego wykonanie zabiera znacznie mniej czasu właśnie ze względu na duże możliwości jądra (nawet porównując z 1-cyklową '51 Cygnala).

Przytoczone tu wcześniej przez Blue porównanie wydajności ARMa chodzącego z zegarem 2x niższym niż '51 a i tak wykonującym szybciej ten sam algorytm całkowicie upewnia mnie w przekonaniu, że przyszłość należy do ARMów (pozostaje tylko kwestia ceny). Nawet tych w małych obudowach - w końcu jeżeli nie potrzeba kilkudziesięciu MIPSów to zawsze można zejść z zegarem ku oszczędności poboru mocy. Bo akurat jądro ARMa ma bardzo dobry stosunek wydajności do pobieranej mocy (MIPS/mW) porównywalny nawet z DSPkami. BTW: Niektórzy producenci liczą odwrotnie, w mW/MHz.

Przeliczając z dokumentacji procesorów Atmela: AT89S52: 25 mA @ 5V przy 12 MHz (1 MIPS) czyli 8 MIPS/mW ATMEGA8: 15 mA @ 5V przy 12 MHz (12 MIPS) czyli 160 MIPS/mW AT91SAM7S64: 31,3 mA @ 3V3 plus 29,3 mA @ 1,8V przy 50 MHz (50 MIPS) czyli 320 MIPS/mW

Warto przypomnieć to co wyżej, czyli że dodatkowo MIPSy '51 są dużo "słabsze" niż MIPSy ARMa.

Reply to
Adam Dybkowski

mnozenia float ? To stawiam ze '51 miala biblioteke niewiarygodnie cudowna, a arm chyba troche skopana ..

Eeee .. czy to aby na pewno jest "zwykla" 8051, tzn pominawszy predkosc ? Rzeklbym ze DSP to juz jest to zastosowanie gdzie '51 staje sie koszmarem ..

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.