Czy architektura x86 została specjalnie zaprojektowana do współpracy z klawiaturą, podczas gdy ARM oczekuje, że będzie mobilny? Jakie są kluczowe różnice między nimi?
Czy architektura x86 została specjalnie zaprojektowana do współpracy z klawiaturą, podczas gdy ARM oczekuje, że będzie mobilny? Jakie są kluczowe różnice między nimi?
Odpowiedzi:
ARM
jest architekturą RISC (Reduced Instruction Set Computing), podczas gdy x86
jest to architektura CISC (Complex Instruction Set Computing).
Podstawowa różnica między tymi w tym aspekcie polega na tym, że instrukcje ARM działają tylko na rejestrach z kilkoma instrukcjami do ładowania i zapisywania danych z / do pamięci, podczas gdy x86 może również działać bezpośrednio w pamięci. Aż do wersji 8 ARM był natywną architekturą 32-bitową, faworyzując operacje czterobajtowe nad innymi.
Tak więc ARM jest prostszą architekturą, prowadzącą do małego obszaru krzemu i wielu funkcji oszczędzania energii, podczas gdy x86 staje się bestią mocy zarówno pod względem zużycia energii, jak i produkcji.
Pytanie o pytanie „ Czy architektura x86 jest specjalnie zaprojektowana do współpracy z klawiaturą, podczas gdy ARM oczekuje, że będzie mobilny? ”. x86
nie jest specjalnie zaprojektowany do współpracy z klawiaturą ani ARM
dla telefonów komórkowych. Jednak ponownie, z powodu podstawowych wyborów architektonicznych, x86 ma również instrukcje do bezpośredniej pracy, IO
podczas gdy ARM nie. Jednak w przypadku wyspecjalizowanych magistral IO, takich jak USB, zapotrzebowanie na takie funkcje również zanika.
Jeśli potrzebujesz dokumentu do zacytowania, oto, co Cortex-A Series Programmers Guide (4.0) mówi o różnicach między architekturami RISC i CISC:
Procesor ARM to procesor RISC (Reduced Instruction Set Computer).
Procesory CISC (Complex Instruction Set Computer), takie jak x86, mają bogaty zestaw instrukcji umożliwiających wykonywanie złożonych zadań za pomocą jednej instrukcji. Takie procesory często mają znaczną ilość wewnętrznej logiki, która dekoduje instrukcje maszynowe do sekwencji operacji wewnętrznych (mikrokodu).
W przeciwieństwie do tego, architektury RISC mają mniejszą liczbę instrukcji bardziej ogólnego przeznaczenia, które mogą być wykonywane przy użyciu znacznie mniejszej liczby tranzystorów, dzięki czemu krzem jest tańszy i bardziej energooszczędny. Podobnie jak inne architektury RISC, rdzenie ARM mają dużą liczbę rejestrów ogólnego przeznaczenia i wiele instrukcji wykonywanych w jednym cyklu. Posiada proste tryby adresowania, w których wszystkie adresy ładowania / przechowywania można określić na podstawie zawartości rejestru i pól instrukcji.
Firma ARM udostępnia również artykuł zatytułowany Architectures, Processors and Devices Development Article, w którym opisano, w jaki sposób te warunki odnoszą się do ich działalności.
Przykład porównujący architekturę zestawu instrukcji:
Na przykład, jeśli potrzebujesz jakiegoś bajtowego bloku porównującego pamięć w swojej aplikacji (wygenerowanego przez kompilator, pomijając szczegóły), tak może to wyglądać x86
repe cmpsb /* repeat while equal compare string bytewise */
podczas gdy w ARM
najkrótszej formie może wyglądać (bez sprawdzania błędów itp.)
top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2 /* subtract r2 from r3 and put result into r2 */
beq top /* branch(/jump) if result is zero */
co powinno dać ci wskazówkę, jak zestawy instrukcji RISC i CISC różnią się złożonością.
Żaden z nich nie ma nic specyficznego dla klawiatury lub telefonu komórkowego, poza tym, że od lat ARM ma dość znaczną przewagę pod względem zużycia energii, co czyni go atrakcyjnym dla wszelkiego rodzaju urządzeń zasilanych bateryjnie.
Jeśli chodzi o rzeczywiste różnice: ARM ma więcej rejestrów, obsługuje predykację dla większości instrukcji na długo przed dodaniem go przez firmę Intel i od dawna stosuje różne techniki (nazywaj je „sztuczkami”, jeśli wolisz), aby oszczędzać energię prawie wszędzie, gdzie tylko było to możliwe.
Istnieje również znaczna różnica w sposobie kodowania tych dwóch instrukcji. Firma Intel używa dość złożonego kodowania o zmiennej długości, w którym instrukcja może zajmować od 1 do 15 bajtów. Dzięki temu programy są dość małe, ale sprawia, że dekodowanie instrukcji jest stosunkowo trudne (jak w przypadku: szybkie równoległe dekodowanie instrukcji jest bardziej jak kompletny koszmar).
ARM ma dwa różne tryby kodowania instrukcji: ARM i THUMB. W trybie ARM masz dostęp do wszystkich instrukcji, a kodowanie jest niezwykle proste i szybkie w dekodowaniu. Niestety, kod trybu ARM jest dość duży, więc dość często program zajmuje około dwa razy więcej pamięci niż kod Intela. Tryb kciuka próbuje to złagodzić. Nadal używa dość regularnego kodowania instrukcji, ale redukuje większość instrukcji z 32 do 16 bitów, na przykład poprzez zmniejszenie liczby rejestrów, wyeliminowanie predykacji z większości instrukcji i zmniejszenie zakresu rozgałęzień. Przynajmniej z mojego doświadczenia, to zwykle nie daje całkiemtak gęstego kodowania, jak może uzyskać kod x86, ale jest dość blisko, a dekodowanie jest nadal dość proste i proste. Niższa gęstość kodu oznacza, że generalnie potrzebujesz co najmniej trochę więcej pamięci i (ogólnie rzecz biorąc) większej pamięci podręcznej, aby uzyskać równoważną wydajność.
Kiedyś Intel kładł większy nacisk na szybkość niż na zużycie energii. Zaczęli podkreślać zużycie energii przede wszystkim w kontekście laptopów. W przypadku laptopów ich typowa docelowa moc wynosiła około 6 watów dla dość małego laptopa. Niedawno ( znacznie niedawno) zaczęli kierować reklamy na urządzenia mobilne (telefony, tablety itp.) Na tym rynku patrzą na maksymalnie kilka watów. Wydaje się, że radzą sobie w tym całkiem nieźle, chociaż ich podejście znacznie różniło się od ARM, kładąc nacisk na technologię produkcji, w której ARM kładł głównie nacisk na mikroarchitekturę (nic dziwnego, biorąc pod uwagę, że ARM sprzedaje projekty i pozostawia produkcję innym).
W zależności od sytuacji zużycie energii przez procesor jest jednak często ważniejsze niż zużycie energii. Przynajmniej tak, jak używam tych terminów, zużycie energii odnosi się do zużycia energii (mniej więcej) chwilowego. Zużycie energii normalizuje się jednak pod względem szybkości, więc jeśli (na przykład) procesor A zużywa 1 W na 2 sekundy, aby wykonać zadanie, a procesor B zużywa 2 waty przez 1 sekundę, aby wykonać to samo zadanie, oba procesory zużywają tę samą łączną ilość energii (dwie waty sekundy), aby wykonać tę pracę - ale z procesorem B otrzymujesz wyniki dwukrotnie szybciej.
Procesory ARM zwykle radzą sobie bardzo dobrze pod względem zużycia energii. Więc jeśli potrzebujesz czegoś, co wymaga „obecności” procesora prawie bez przerwy, ale tak naprawdę nie wykonuje dużo pracy, mogą one działać całkiem nieźle. Na przykład, jeśli prowadzisz wideokonferencje, zbierasz kilka milisekund danych, kompresujesz je, wysyłasz, odbierasz dane od innych, dekompresujesz, odtwarzasz i powtarzasz. Nawet naprawdę szybki procesor nie może spędzać dużo czasu na spaniu, więc w przypadku takich zadań ARM radzi sobie naprawdę dobrze.
Procesory Intela (zwłaszcza ich procesory Atom, które są w rzeczywistości przeznaczone do zastosowań o niskim poborze mocy) są niezwykle konkurencyjne pod względem zużycia energii. Gdy zbliżają się do swojej pełnej prędkości, zużywają więcej energii niż większość procesorów ARM - ale także szybko kończą pracę, dzięki czemu mogą szybciej zasnąć. W rezultacie mogą łączyć dobrą żywotność baterii z dobrą wydajnością.
Więc porównując te dwa, musisz uważać na to, co mierzysz, aby mieć pewność, że odzwierciedla to, na czym szczerze Ci zależy. ARM bardzo dobrze radzi sobie z poborem mocy, ale w zależności od sytuacji możesz z łatwością przejmować się bardziej zużyciem energii niż chwilowym.
Dodatek do pierwszego akapitu Jerry'ego Coffina . To znaczy konstrukcja ARM zapewnia mniejsze zużycie energii.
Firma ARM
udziela licencji tylko na technologię procesora. Nie wytwarzają fizycznych chipów. Umożliwia to innym firmom dodawanie różnych technologii peryferyjnych, zwykle nazywanych SOC lub system-on-chip. Niezależnie od tego, czy urządzenie to tablet, telefon komórkowy czy samochodowy system rozrywki. Umożliwia to dostawcom chipów dostosowanie pozostałej części chipa do określonej aplikacji. Ma to dodatkowe korzyści,
ARM
obsługuje dostawców SOC z AMBA , umożliwiając wdrażającym SOC zakup gotowych modułów innych firm; jak Ethernet, kontrolery pamięci i przerwań. Niektóre inne platformy procesorów obsługują to, jak MIPS , ale MIPS nie jest tak świadomy mocy.
Wszystko to jest korzystne dla konstrukcji ręcznej / zasilanej bateryjnie. Niektóre są po prostu dobre pod każdym względem. Jak dobrze, ARM
ma historię urządzeń zasilanych bateryjnie; Apple Newton , organizatorzy Psion . PDA oprogramowanie infra-struktura została wykorzystywane przez niektóre firmy do tworzenia inteligentnych telefonów urządzeń typu. Chociaż większy sukces odnieśli ci, którzy ponownie wymyślili GUI do użytku ze smartfonem .
Powstanie Open source
zestawów narzędzi, a operating systems
także ułatwiło różne SOC
chipy. Zamknięta organizacja miałaby problemy z obsługą wszystkich różnych urządzeń dostępnych dla ARM. Dwie najpopularniejsze platformy komórkowe, Andriod i OSx / IOS, są oparte na systemach operacyjnych Linux i FreeBSD, Mach i NetBSD . Open Source
pomaga SOC
dostawcom zapewnić obsługę oprogramowania dla ich zestawów chipów.
Miejmy nadzieję, że dlaczego klawiatura x86 jest używana w klawiaturze jest oczywista. Ma oprogramowanie, a co ważniejsze, ma ludzi przeszkolonych w używaniu tego oprogramowania. Netwinder to jeden ARM
system, który został pierwotnie zaprojektowany dla klawiatury . Ponadto producenci szukają obecnie ARM64 na rynek serwerów. Energia / ciepło to problem w całodobowych centrach danych.
Powiedziałbym więc, że ekosystem, który rośnie wokół tych chipów, jest równie ważny, jak funkcje takie jak niskie zużycie energii. ARM
od jakiegoś czasu (od połowy do późnych lat 80-tych) dąży do energooszczędnych i wydajnych obliczeń i ma na pokładzie wielu ludzi.
Uwaga 1: Wiele układów wymaga sterowników magistrali do komunikacji między sobą przy znanych napięciach i jazdy. Ponadto zwykle oddzielne układy scalone wymagają kondensatorów pomocniczych i innych elementów zasilania, które mogą być współużytkowane w systemie SOC .
ARM jest jak włoski samochód sportowy:
X86 jest jak amerykański muscle car:
Podsumowując: x86 jest oparty na konstrukcji z 1974 roku i jest dobry w linii prostej (ale zużywa dużo paliwa). Ramię zużywa mało paliwa, nie zwalnia na zakrętach (gałęzie).
Metafora, oto kilka rzeczywistych różnic.
Architektura ARM została pierwotnie zaprojektowana dla komputerów osobistych Acorn (patrz Acorn Archimedes , około 1987 i RiscPC ), które były w takim samym stopniu jak komputery osobiste oparte na klawiaturze, jak modele IBM PC oparte na x86. Dopiero późniejsze wdrożenia ARM były ukierunkowane przede wszystkim na segment rynku mobile i embedded.
Początkowo proste procesory RISC o mniej więcej równoważnej wydajności mogły być projektowane przez znacznie mniejsze zespoły inżynierów (patrz Berkeley RISC ) niż te pracujące nad rozwojem x86 w firmie Intel.
Ale obecnie najszybsze układy ARM mają bardzo złożone jednostki wysyłające rozkazy rozkazów poza kolejnością, zaprojektowane przez duże zespoły inżynierów, a rdzenie x86 mogą mieć coś w rodzaju rdzenia RISC zasilanego przez jednostkę tłumaczenia instrukcji.
Zatem wszelkie obecne różnice między dwiema architekturami są bardziej związane z konkretnymi potrzebami rynkowymi nisz produktowych, na które kierują się zespoły programistyczne. (Losowa opinia: ARM prawdopodobnie zarabia więcej na opłatach licencyjnych z aplikacji wbudowanych, które zwykle są znacznie bardziej wydajne i ograniczone kosztami. A Intel musi utrzymywać przewagę wydajności w komputerach PC i serwerach ze względu na ich marże zysku. W ten sposób widać różne optymalizacje implementacji).