Co jest takiego wspaniałego w ARM?

61

W komentarzu do tej odpowiedzi Kortuk pyta, co jest zaletą ARM . Najpierw dodałem kilka argumentów do mojej odpowiedzi, ale myślę, że pytanie jest wystarczająco interesujące, aby samo w sobie było pytaniem, aby możliwe było uzyskanie większej liczby odpowiedzi.

rev stevenvh
źródło
1
twoje odpowiedzi wydają się być konstruktywne w przypadku najmniej konstruktywnych pytań, ale obawiam się, że inni napiszą bardzo pozytywne opinie. Zobaczymy, czy ludzie będą próbowali przeszkadzać w ustawionym przez ciebie poprzeczce.
Kortuk
@Kortuk - Możesz edytować treść pytania lub tytułu, jeśli uważasz, że może to pomóc w uzyskaniu lepszych odpowiedzi. (W każdym razie to było twoje pytanie)
stevenvh
5
To pytanie dotyczy wojny religijnej. Gdyby nie ludzie pytający i komentujący, głosowałbym za natychmiastowym zamknięciem. Pamiętaj, że wiesz, że zawsze masz rację, a drugi facet jest barbarzyńskim poganinem, gdy jest to kwestia wiary. Niech rozpocznie się dżihad ...
Olin Lathrop
@olinLathrop, właśnie tego oczekuję. Obecnie wydaje się, że otrzymujemy bardzo wysokiej jakości odpowiedzi bez kłótni. Prawdopodobnie sprawię, że będzie to CW na dłuższą metę i pozwolę żyć przynęcie Google w połączeniu z interesującymi informacjami na temat ręki. Normalnie bym to zamknął, ale @stevenvh otworzył je świetną odpowiedzią i wydaje się, że nadał ton jakości.
Kortuk

Odpowiedzi:

51

Wydajność to jedna zaleta. Będąc 32-bitowym procesorem, przewyższa (prawie) wszystkie 8-bitowe kontrolery pod względem DMIPS. Rdzeń przeszedł także kilka generacji optymalizacji odczytu.
Te optymalizacje pokazują nie tylko liczby wydajności, ale także zużycie energii . Najnowszy rdzeń podwoił stosunek DMIPS / mW w porównaniu do poprzedniej generacji (patrz również ta odpowiedź ).
ARM jest dostępny od wielu producentów , bardziej niż jakikolwiek inny mikrokontroler, i każdy ma wiele wersji do wyboru, z różnymi kombinacjami urządzeń peryferyjnych i pamięci oraz pakietów. Przykład: NXP oferuje nie mniej niż 35 kontrolerów z wbudowanym Ethernetem .
ARM sąniedrogi ; ARM był prawdopodobnie pierwszym 32-bitowym kontrolerem, który przełamał barierę 1 USD.

Ta kombinacja wydajności , szerokiej oferty i niskich kosztów sprawia, że ​​po prostu nie możesz zignorować ARM:

Według badań analityka Linley Group w 2005 r. Około 98 procent wszystkich telefonów komórkowych używa co najmniej jednego rdzenia zaprojektowanego przez ARM na swoich płytach głównych. ( źródło )

Rynek telefonów komórkowych ma także inny efekt. Telefony komórkowe są bardzo ograniczone przestrzennie i wymagają małych paczek. LPC1102 NXP jest dostępny w pakiecie WLP-16 o wielkości zaledwie 5 mm , skali używanej wcześniej tylko przez 8-bitowe mikrokontrolery o niskiej liczbie pinów.2

stevenvh
źródło
1
Mogę tylko dodać, że ARM zdecydowanie pierwszy 32-bitowy mikroprocesor przełamał cenę 0,5 $ (Cortex M0 w kwantach)
BarsMonster
@Barsmonster - Cool! Wygląda na to, że jedyną przyszłością dla 8-bitów są DFN 2 mm x 3 mm
stevenvh
@self - a może nawet nie to. Zobacz dodatek dotyczący LPC1102 w mojej odpowiedzi.
stevenvh
@stevenvh - Cóż, nadal istnieje przewaga w zużyciu energii. Tryb uśpienia LPC1102 @ 12MHz wykorzystuje 1mA. Nieźle, ale około 1000 razy więcej niż [16 bitów] msp430.
Imbrondir
1
@self - Zdrap też tę przewagę. Po kilku poszukiwaniach wydaje się, że Energy Micro ma M3, który w trybie uśpienia + RTC może spaść do 0,6uA.
Imbrondir
37

Jeden punkt jeszcze nie wspomniany: w 1908 roku facet o nazwisku Pan PL Robertson wynalazł nowy ulepszony łeb śruby i wkrętak . Chciał być jedyną osobą, która produkuje śruby i wkręty zgodnie z jego projektem. Dziesiątki lat później ktoś o nazwisku Henry F. Phillips wpadł na alternatywny projekt . W przeciwieństwie do pana Robertsona, pan Phillips był bardziej zainteresowany licencjonowaniem swojego projektu niż produkcją śrub i sterowników.

Podobnie w latach 70. Sony opracowało technologię o nazwie Betamax ; JVC wymyślił VHS. Sony było zainteresowane produkcją magnetowidów; JVC był bardziej zainteresowany licencjonowaniem.

Wygląda na to, że jest tu pewien wzór. (Uwaga: przez jakiś czas Intel licencjonował technologię 80x86 , ale od dziesięcioleci koncentruje się bardziej na opracowywaniu technologii do użytku wewnętrznego).

Peter Mortensen
źródło
4
Tak. Myślę, że program licencjonowania własności intelektualnej ARM jest przyczyną sukcesu.
10
ARM pozwala na dużą elastyczność dzięki licencjonowaniu. Jeśli potrzebujesz tylko adresu IP dla kilku rdzeni, nie kosztuje to zbyt wiele. Ale jeśli chcesz stworzyć wysoce spersonalizowany układ, w pełni zoptymalizowany przez projektantów układów, kosztuje to więcej, ale jest dostępną opcją. Tak więc firma taka jak Apple może opracować własną linię procesorów zoptymalizowanych pod kątem ich zastosowania. Większość firm nie pozwoliłaby, aby tak wiele klejnotów koronnych pozostało poza ich kontrolą.
Mike DeSimone
Należy zauważyć, że ARM nie konkuruje z linią x86 Intela (nawet tak naprawdę w przestrzeni, w której działają nowe procesory Atom). Jeśli twoja odpowiedź miała na to sugerować, to jest niepoprawna. Architektury Intela Moorestown i Medfield (mają) konkurować w tej samej przestrzeni co ARM.
Mark
1
Minęło wiele lat, odkąd linia Intel 80x86 była konkurencyjna w aplikacjach, w których ARM byłby dzisiaj używany, ale 8088, 8086, 80286 i 80386, z których wszystkie były licencjonowane, były popularne w systemach wbudowanych. Mój komentarz na temat Intela miał przede wszystkim potwierdzić, że Intel jest dziś popularny, mimo że nie jest licencjonowany jak ARM.
supercat
@ supercat: Intel licencjonuje obecnie wiele miękkich adresów IP. Zapewnia także narzędzia do projektowania i sączyć do projektowania FPGA ( intel.com/content/www/us/en/fpga/ip-and-design-tools.html )
jbord39
32
  1. Ten sam sprzęt / oprogramowanie do opracowania dla ARM wszystkich dostawców. Kupujesz JLINK / ULINK i trochę Keil IDE raz i możesz go używać do opracowywania, emulacji i debugowania prawie dowolnego ARM na planecie.

  2. Nie trzeba uczyć się nowej architektury przy przejściu na nowego producenta chipa => mniej blokady dostawcy => większa konkurencja => niższe ceny

  3. W nowoczesnych procesach technologicznych (0,18um i niższych) rdzeń ARM jest tak mały, że poświęcenie go dla 8-rdzeniowego rdzenia nie pozwoliłoby zaoszczędzić żadnej widocznej części ceny. Stąd powód wyboru standardowej, a jednocześnie taniej architektury.

  4. Wydajność - tylko z ARM możesz mieć pojedynczy zegar 32 * 32-> 32 mnożenie i wsparcie sprzętowe dla 32 * 32-> 64 oraz podział dla urządzeń sub-1dollar (np. Niższych STM32 na przykład)

  5. ARM nie jest zbyt chciwy i nie pobiera nieuzasadnionych opłat za licencje, więc producenci mogą produkować tanie mikroskopy.

BarsMonster
źródło
27

Skupiam się na procesorach ARM klasy średniej z następujących powodów:

  1. Pełna obsługa systemu Linux

    Oznacza to, że sterowniki urządzeń są prawie bezpłatne. Zrobiłem wystarczająco dużo kodu hosta USB i urządzenia, nie chcę tego więcej robić. Nie jestem też zbyt podekscytowany próbą dodania TCP / IP do platformy losowego procesora (chociaż LwIP / uIP nie jest taki zły). Nigdy nawet nie próbowałem korzystać z Wi-Fi, prawdziwego stosu Bluetooth, kamer internetowych itp. Korzystanie z Linuksa oznacza, że ​​bardzo szeroka gama urządzeń staje się znacznie łatwiejsza do rozmowy.

    Byłem też bardzo zaskoczony, jak racjonalne i łatwe jest pisanie sterowników urządzeń z Linuksem. Po wykonaniu niektórych sterowników urządzeń z systemem Linux Linux jest snem. (Szczerze mówiąc, struktura sterowników systemu Windows znacznie się poprawiła, odkąd to robiłem).

    Platforma oprogramowania jest również niesamowita. Dostaję szyfrowanie SSL, systemy plików, zdalne zarządzanie, łatwe aktualizacje aplikacji (skopiuj plik zamiast złożonego bootloadera) itp. Aha, i wiele istniejących narzędzi, jeśli potrzebujesz czegoś.

    Jest również bezpłatny i znacznie łatwiej zginać się według własnej woli, niż twierdzić, że platforma WinCE o zamkniętym źródle byłaby. (Nie to, że jestem naprawdę idealistą open source ... dla mnie to bardzo praktyczne uzasadnienie.)

    Mówię o rdzeniach ARM z rzeczywistymi MMU , więc dotyczy to układów średnich i wysokich (chociaż przypuszczam, że można użyć μClinux ).

  2. Pobór energii

    Jest to w zasadzie powtórzenie komentarzy innych, ale jest to dla mnie duży czynnik. Moja obecna platforma ARM 454 MHz pobiera 1/2 wata, 1 wata przy maks. Procesorze. Nie możesz nawet zbliżyć się do tego dzięki x86.

To właściwie moje rozumowanie. Nie widzę, żeby równanie zmieniło się w najbliższym czasie.

darron
źródło
2
Powiązane: Wiele opcji RTOS.
Steve S
Większość twoich odpowiedzi dotyczy tak samo większości architektur CPU, jak i ARM. Wiele z nich dotyczy również 2). Lista architektur obsługiwanych przez Linuksa jest DŁUGA, a ARM jest tylko jedną z nich.
Mark
19

ARM przeszedł postępy:

  1. Architektura instrukcji 32-bitowych, która zawierała obszerniejszy kod niż wiele innych architektur, ale którą można szybko zdekodować i wykonać wiele operacji przy mniejszej liczbie instrukcji niż architektura konkurencyjna
  2. Architektura formatu z dwiema instrukcjami, która może przełączać się między ładnym i mocnym (ale niestety nieco rozdętym) zestawem instrukcji ARM, a mniej wydajnym (ale o wiele bardziej kompaktowym) 16-bitowym zestawem instrukcji „Thumb”. Każda instrukcja Thumb miała odpowiednią instrukcję ARM, co minimalizuje potrzebę uczenia się dwóch zestawów instrukcji przez programistów.
  3. Architektura Thumb2, która dodała instrukcje składające się z dwóch słów do zestawu instrukcji Thumb, co daje w zasadzie wygraną: typowy kod ARM zawierałby zestaw instrukcji dostępnych tylko w ARM oraz instrukcji dostępnych w Thumb ale i tak musiał być reprezentowany jako 32 bity; w Thumb2 taki kod zyskuje korzyści przestrzenne, zastępując niektóre 32-bitowe instrukcje 16-bitowymi.
  4. Architektura tylko dla kciuka, która jest bardziej ograniczająca niż mnie to obchodzi, ale która jest mniejsza i tańsza niż jakakolwiek inna.

Architektura ARM pozwala na wykonywanie bardzo skomplikowanych operacji bardzo szybko - znacznie szybciej niż na jakimkolwiek innym układzie. Na przykład (przy użyciu ARM7-TDMI):

  ldrh r0, [r10, # ADDR_BUS_OFS]; Odczytaj docelową magistralę adresową systemu (13 bitów)
  ldrb r1, [r9, r0, lsr # 8]; Użyj górnych bitów, aby wyszukać adres w tabeli programów obsługi
  dodaj pc, r9, r1 lsl # 2; Przejdź do odpowiedniego przewodnika

Każdy moduł obsługi jest przechowywany jako bajt, co daje 1/4 przesunięcia adresu od początku tabeli. Efektem netto jest to, że po pobraniu zawartości magistrali adresowej potrzeba tylko sześciu cykli (dwóch instrukcji), aby przejść do modułu obsługi na podstawie pięciu górnych bitów pobranego pliku, używając 32-bajtowej tabeli skoków.

Odpowiadający kod THUMB byłby bardziej podobny do:

; Zakładając, że nie potrzebujemy r6 / r7 do niczego innego, są one ponownie przypisane z r9 / r10
  ldrh r0, [r7, # ADDR_BUS_OFS]
  mov r1, r0
  lsr r1, r1, # 8; THUMB wymaga, aby źródło i miejsce docelowe były takie same
  ldrb r1, [r6, r1]
  lsl r1, r1, # 1; Przydałoby się przesunięcie w lewo-dwa, jeśli adresy docelowe były wyrównane pełnymi słowami
  dodaj komputer, r1

Z punktu widzenia gęstości kodu jest to w porządku, biorąc pod uwagę, że instrukcje są tylko w połowie tak duże jak oryginały, ale po pobraniu zajęłyby dziewięć cykli, a nie sześć. W aplikacji, w której obserwowany autobus będzie działał z własną prędkością, niezależnie od tego, czy ARM poradził sobie z tym, szybsze instrukcje ARM są dużym plusem.

Nawiasem mówiąc, Thumb2 jest binarnie kompatybilny z Thumb, co ułatwia korzystanie z wcześniejszych narzędzi, ale oznacza, że ​​jest kilka rzeczy, których nie może zrobić tak dobrze, jak oryginalny ARM. Na przykład w ARM można „obrócić” bitmapę 8x8 przechowywaną w czterech rejestrach przy użyciu około 3 instrukcji na dwa bity:

  movs r0, r4, lsl # 25; Umieść górny bit LSB w C, a następny bit w N
  orrcs r6, # 0x00000001
  orrmi r6, # 0x00000100

W Thumb2 konieczne byłoby dodanie wyraźnych instrukcji warunkowych:

  movs r0, r4, lsl # 25; Umieść górny bit LSB w C, a następny bit w N
  itcs
  orrcs r6, # 0x00000001
  itmi
  orrmi r6, # 0x00000100

33% redukcja wydajności czasu i przestrzeni netto w porównaniu z ARM; oznacza to prawdopodobnie najgorszy przykład, że kod Kciuka jest mniej wydajny niż ARM, a nawet to nie jest aż tak straszne.

Jeszcze jedna niewielka wada Thumb2 w porównaniu z ARM: w kodzie ARM wszystkie instrukcje zaczynają się od granic pełnych słów, co ułatwia analizę statyczną. W Thumb2 instrukcje mogą dowolnie zaczynać się od granic półsłów i przekraczać granice pełnych słów. Analiza statyczna może być zatem znacznie trudniejsza.

superkat
źródło
14

Trochę to historia, Acorn chciał niestandardowego procesora (np. Z wbudowanymi kontrolkami pamięci itp.) Dla nowego komputera w latach 80. (8-bitowy 6502 ograniczał to, co mogli zrobić). Rozmawiali z Intelem, ale Intel nie udzieliłby im licencji na procesor.

Dlatego Acorn zaprojektował bardzo prosty procesor RISC, ale ponieważ nie byli producentem procesorów, byli gotowi udzielić licencji każdemu (i potrzebowali wszystkich szybkich pieniędzy, jakie mogli uzyskać!). (Wierzę, że procesor działał po raz pierwszy, częściowo dlatego, że był tak prosty, a także projektant stworzył wiele procesorów badawczych podczas Uniwersytetu Cambridge).

Z biegiem lat projektowanie procesora stawało się coraz łatwiejsze do uwzględnienia w projektowaniu układów klienta.

Producent chipów czuł się bezpiecznie licencjonowany przez Acorn, ponieważ nie byli konkurentami. Nikt też nie pomyślał, że jadą do rodzinnego miasta konkurenta, aby uzyskać licencję, ponieważ Acorn był w Cambridge (prawdziwy!) . (Czy szansa na „odkrycie faktów” podróży do Cambridge, aby odwiedzić Acorn, wpływa na zwarcie listy opcji w dowolnym momencie…)

Wiele projektów obejmujących procesor Acorn Risc Machine dotyczyło systemu osadzania, w którym zużycie energii było ważne. Dla procesora Acorn Risc Machine stworzono również tanie i dobre narzędzia programistyczne.

Kiedy więc telefony komórkowe zaczęły potrzebować niestandardowych układów z wbudowanym procesorem, Acorn został przemianowany na ARM, a reszta to już historia. (Być może nieco inaczej było, że inne procesory były w większości kontrolowane przez USA, ale telefony komórkowe najpierw stały się normalne w Europie)

(Czy coś z tego przypomina o Microsoft i Dos z małym nieznanym zespołem z IBM?)

Pomógł również fakt, że ARM był jednym z najlepszych procesorów w tamtym czasie (i nadal jest) do wielu zadań - ale samo posiadanie „najlepszej” konstrukcji procesora nie wystarczy.

Ian Ringrose
źródło
Nazwa Acorn RISC Machine została faktycznie przemianowana na Advanced RISC Machines (która określa ARM). Również tylko gałąź procesora ARM w Acorn uzyskała niezależność i jest znana jako Advanced RISC Machines. Acorn kontynuował rozwój swojego RISC-OS i wierzę, że teraz jest on również znany.
jippie
13

Pomijając kwestie techniczne, istnieje wiele nietechnicznych powodów ARM. Ale szybka odpowiedź brzmi: to nie Intel (lub x86).

Jeśli spojrzysz na to, gdzie obecnie inwestowane są dolary R&D procesora, dzielą się one zasadniczo na dwa obozy: ARM i Intel. (Ignoruję małe MCU i wprowadzam AMD do Intela.) Bardzo mało pieniędzy idzie na PowerPC, MIPS, SPARC i inne duże procesory. ARM i Intel są jedynymi, które wciąż stoją.

Dzięki procesorom Intel i innym procesorom x86 zyskujesz ogromną ilość starszego bagażu. Na przykład potrzebujesz chipsetu, systemu BIOS i innych rzeczy. Nawet jeśli procesor był super energooszczędny, te inne urządzenia mają tendencję do obciążania systemu i zwiększania jego wydajności, zwiększania zużycia energii i zwiększania kosztów. Samo opracowanie płytki drukowanej z procesorem Intela jest ogromnym problemem, a następnie musisz negocjować z dostawcą BIOS-u itp. Co gorsza, wielu dostawców chipsetów, BIOS-ów, układów wideo itp. Po prostu nie chce robić interesy z małymi ludźmi, którzy nie sprzedają mniej niż milion jednostek rocznie.

Dzięki ARM nie masz tego bagażu. Istnieje wiele źródeł chipów od mikrokontrolerów do potworów wielordzeniowych. Nie musisz zajmować się licencjonowaniem systemu BIOS (co jest bardzo podobne do wizyty u sprzedawcy używanych samochodów). A producenci i dostawcy są ogólnie mili dla ciebie.

użytkownik 3624
źródło
2
Nie ignoruj ​​małych MCU. ARM zyskuje również dużą część tego rynku dzięki serii Cortex-M. W dzisiejszych czasach dwa razy pomyślałem o użyciu kontrolera 32-bitowego innego niż ARM.
Mike DeSimone
Tak, zgadzam się na @Mike. ARM próbuje obecnie ekspansji na rynek dużej mocy, w którym Intel dominuje jak serwery. Są znani ze swoich mikrokontrolerów średniego i wysokiego zakresu oraz mikroprocesorów niskiego i średniego zasięgu
Kortuk
Intel licencjonuje obecnie więcej adresów IP (szczególnie z przejęciem Altera). Zobacz na przykład : intel.com/content/www/us/en/fpga/ip-and-design-tools.html .
jbord39,
12

Porównaj ARM7 / ARM9 z MIPS IV, a korzyści wynikające z licencji są już dobrze wspomniane. Elementy wewnętrzne zestawu instrukcji MIPS i magistrali wewnętrznej sprawiają, że jest on lepszy (wydajność na koszt) w przypadku niektórych typów projektów; dlatego wiele routerów Wi-Fi używa rdzeni MIPS zamiast rdzeni ARM.

Ponieważ rdzenie ARM zostały zastosowane głównie w urządzeniach przenośnych, układy ASIC dodały więcej funkcji kontroli mocy, podczas gdy MIPS bardziej skupia się na wydajności na cykl niż na niższej mocy. Korzyść z RISC nad Intel x86 to inna dyskusja.

Peter Mortensen
źródło
1
Zauważ, że linia PIC 32 Microchip wykorzystuje rdzeń MIPS. MIPS jest zatem dostępny również w małych, tanich, samodzielnych i o niskim poborze mocy. Ponadto można na nich używać MPLAB, czego nie można zrobić z żadnym ARM.
Olin Lathrop,
Innym komentarzem, który słyszę od projektantów ASIC jest to, że ARM AHB i APB są trudne w obsłudze (być może z powodu oddzielnych licencji lub problemów projektowych). Natomiast autobusy MIPS są w jakiś sposób łatwiejsze. Znaczenie: rdzeń jest jedną rzeczą; urządzenia peryferyjne poza rdzeniem również wymagają rozważenia.
Jonathan Cline
-8

Nie ma prawdziwych zalet. Dołączone DSP i inne kontrolery, takie jak GSM, sprawiają, że są tak popularne.

Peter Mortensen
źródło
3
inne odpowiedzi wydają się nie zgadzać.
Kortuk
1
-1 Wszystko na Ziemi ma zalety i wady!
RHaguiuda