- posted
18 years ago
arm w C czy 51 w asm
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
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.
- Vote on answer
- posted
18 years ago
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.
- Vote on answer
- posted
18 years ago
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.- Vote on answer
- posted
18 years ago
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.
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
taaa - Reduced to on naprawde jest :-)
J.
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
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.
- Vote on answer
- posted
18 years ago
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.