Dlaczego telefony z Androidem mają więcej rdzeni niż komputerów?

80

Laptopy mają zwykle najwyżej cztery rdzenie, a podwójne rdzenie są prawdopodobnie bardziej powszechne. Ostatnio przeszedłem z quadcore na dualcore i mogę potwierdzić, że istnieje ograniczona liczba przypadków użycia quadcore, nawet przy zadaniach intensywnie wykorzystujących procesor.

Z drugiej strony, w telefonach komórkowych, quadcores, heksakory i oktakory wydają się być powszechne. Dlaczego? Jakie zadania mogą z nich skorzystać?

Rozumiem, że big.LITTLE może być częścią odpowiedzi. Oznacza to, że główną zaletą tak wielu rdzeni nie jest możliwość korzystania z nich wszystkich jednocześnie, ale raczej użycie rdzenia o zużyciu energii odpowiednim do bieżącego obciążenia pracą. Jednak na przykład Snapdragon 625 ma osiem rdzeni Cortex-A53, co nie wydaje się być przypadkiem dużego.LITTLE.

Być może architektura ARM ma niższy punkt optymalnej wydajności na wat. Oznacza to, że dostosowanie jednego rdzenia do optymalnej wydajności na wat skutkuje niższą wydajnością ARM niż Intela. Dlatego więcej rdzeni jest używanych w celu zapewnienia wydajności. To tylko hipoteza.

Ale nawet w tym przypadku nie widzę, ile obciążenia może efektywnie wykorzystać, powiedzmy, osiem rdzeni w telefonie komórkowym. Na laptopach mogę sobie wyobrazić kilka takich jak pełna (nie przyrostowa) kompilacja projektu. Ale na telefonach?

  • Gry mogą wymagać dużej wydajności, ale zazwyczaj wymagają raczej wydajności GPU niż procesora, prawda?
  • Teoretycznie wiele rdzeni może przyspieszyć kompilację systemu Android Lollipop / Marshmallow AOT podczas instalacji lub aktualizacji (tj. W fazie „Optymalizacja aplikacji 3/121”). Nie jestem jednak pewien, czy może to wykorzystywać wiele rdzeni. O ile pamiętam kod, kompilowana jest tylko jedna aplikacja na raz, ale być może istnieje pewien paralelizm w samym procesie kompilacji.
  • Również Android 7+ może wykorzystywać wiele rdzeni podczas kompilacji. Ale ponieważ podobno kompiluje się w stanie bezczynności i ładowania, korzyść wydaje się raczej minimalna. Przynajmniej gdy ktoś ładuje telefon przez noc - tak naprawdę nie obchodzi mnie, czy w takim przypadku zajmie to 30 minut lub dwie godziny.
v6ak
źródło
Jak wskazałem w mojej odpowiedzi, pamiętaj, że wydaje się, że patrzysz na rzeczy do góry nogami. Wiele rdzeni / równoległe wykonywanie jest normą, to nie twój telefon jest anomalią, ponieważ ma wiele rdzeni, to procesor komputera PC jest anomalią.
motoDrizzt
4
Twoje pytanie jest błędne, komputery mogą mieć więcej rdzeni niż telefony. intel.com/content/www/us/en/products/processors/core/x-series/… To nie dotyczy nawet maszyn klasy serwerowej, które mogą mieć dziesiątki, a nawet setki rdzeni. (A niektóre superkomputery wchodzą w zakres tysięcy rdzeni.)
JAB
3
@JAB Jasne, ale nie mówię o maksymalnej liczbie rdzeni, a raczej o typowej liczbie. W przypadku laptopów więcej niż quady są dość rzadkie, ale można znaleźć wyjątek, może z Xeon. W przypadku telefonów komórkowych nawet oktakory wydają się stosunkowo częste.
v6ak
4
„Niedawno przeszedłem z quadcore na dualcore i mogę potwierdzić, że liczba quadcore jest ograniczona, nawet w przypadku zadań intensywnie wykorzystujących procesor”. - Czy możesz rozwinąć i rozwinąć sposób, w jaki doszedłeś do tego wniosku?
Abdul
@Abdul Pochodzi głównie z moich obserwacji (obserwowanie obciążenia systemu za pomocą htopa lub podobnego narzędzia) i częściowo z moich wniosków. Nawet niektóre taksk, w których oczekiwałbym równoległości (np. Renderowanie przy użyciu OpenScad), są jedno-rdzeniowe. Firefox (ESR) zwykle zużywa najwyżej jeden rdzeń. Kompilacja przyrostowa - nie zmierzyłem jej, ale intuicyjnie nie ma wielu okazji do znalezienia niezależnych zadań. (Pełna kompilacja to inna sprawa.)
v6ak

Odpowiedzi:

63

Jak już wspomniano, big.LITTLE strategia kombinacja (technicznie, HMP , heterogeniczne Wielu tworzenie klastrów) jest głównym powodem tak wielu (a czasem zdecydowanie wielu) rdzeni. Urządzenie mobilne często napotyka wiele scenariuszy, zarówno tych o dużym obciążeniu, jak i o niskim obciążeniu.

Skrajnym przykładem klasy konsumenckiej jest Helio X20 firmy MediaTek, która ma 2 rdzenie A72 zorientowane na wydajność, 4 rdzenie zrównoważone A53 oraz 4 energooszczędne rdzenie A35. Jest to bardzo elastyczne w różnych przypadkach użycia. Myślę jednak, że 8 rdzeni 2 skupień zwykle wystarcza.

Jest też inny przykład biurkowy, Qualcomm Snapdragon 800 series (S 800, S 801 i S 805). W każdym SoC są tylko 4 rdzenie tej samej mikroarchitektury, z 2 wyższymi taktowanymi i 2 niższymi taktowanymi. Qualcomm stworzył te SoC, ponieważ byli bardzo pewni swojej własnej mikroarchitektury (Krait 400 i Krait 450).

W przypadku gier, nawet jeśli pozornie wymagają one wydajności GPU niż procesora, nadal obciążają procesor. Karta graficzna nie może działać sama bez dostarczenia jej danych do przetworzenia, a to jedno z głównych zadań wykonywanych przez procesor podczas grania. W większości przypadków GPU renderuje tylko grafikę, podczas gdy wszystkie inne zadania, takie jak ładowanie danych, zasobów i zasobów oraz obliczanie mechaniki gry, takiej jak system, środowisko i fizyka, wykonywane są przez procesor. Nie zaobserwujesz większej liczby klatek na sekundę, jeśli uaktualnisz swój GPU, pozostając przy niskiej wydajności procesora.

Drugim powodem jest wykorzystanie zasobów procesora przez system Android . Android tworzy własne środowisko aplikacji. Używa wyłącznie kodów (i interfejsów API) z Javy, ale ma własną maszynę wirtualną o nazwie Dalvik, która została później zastąpiona przez ART (API Poziom 21). .classPliki APK mają kody wykonywalne w „neutralnym” formacie, podobnie jak pliki w Javie. Przed uruchomieniem kody są ponownie kompilowane w natywnych instrukcjach maszyny [1] . Proces kompilacji jest wielowątkowy i może wykorzystywać wiele rdzeni w celu zwiększenia wydajności.
Kiedy aplikacja jest uruchomiona, istnieje kilka innych procesów i mechanizmów (takich jak Garbage Collector), które działają równolegle lub równolegle do aplikacji. Więcej rdzeni może pozwolić na wydajniejsze działanie procesów wspierających, a także głównej aplikacji.
1. Jeśli użyjesz identyfikatora typu pliku, przekonasz się, że „zoptymalizowane” pliki dex są w formacie ELF, podczas gdy „neutralne” pliki dex mają tylko własny format.

Innym mniejszym powodem jest to, że rdzenie ARM nie mogą działać tak szybko, jak układ Intel x86 . Mikroarchitektura Intel x86 może być datowana na 1976 r., Kiedy to zaczęto projektować układ Intel 8086 , co oznacza, że ​​x86 rozwijał się przez długi czas. Pojedynczy nowoczesny wysokiej klasy rdzeń ARM Cortex-A73 jest tak potężny jak rdzeń Intel Clarkdale, biorąc na przykład Core i5-660 (GeekBench, jednordzeniowy). Wynika to z faktu, że x86 to mikroarchitektura CISC, a ARM to RISCmikroarchitektura. Na pewno nie chcesz telefonu, który staje się opóźniony, mając tylko dwie lub więcej aktywnych aplikacji. Więcej rdzeni pomoże zmniejszyć nacisk. Dlatego dwurdzeniowe układy SoC są stosunkowo popularne tylko w inteligentnych zegarkach. Kto potrzebuje wydajności na inteligentnym zegarku?

Co ciekawe, więcej rdzeni spowoduje mniejszą moc niż pojedynczy rdzeń przy tym samym obciążeniu . Zależność między częstotliwością procesora a zużyciem energii jest bardziej niż liniowa, więc dwukrotność częstotliwości zawsze będzie wymagała ponad dwukrotnie, a nawet trzykrotnie lub czterokrotnie większej mocy, przy jednoczesnym zapewnieniu mniej niż dwukrotnej wydajności (z powodu innych ograniczeń zasobów, takich jak pamięć podręczna ). Tak więc 4 rdzenie mogą z łatwością pokonać pojedynczy rdzeń przy tym samym obciążeniu, zapewniając lepszą wydajność i jednocześnie wymagając mniejszej mocy.

Dalsza lektura:

iBug
źródło
1
Pamiętam, że czytałem lub oglądałem gdzieś, że jądro Linuksa pierwotnie działało na dobrym wsparciu wielordzeniowym, koncentrując się na superkomputerach, wiele lat temu, a wysiłki te okazały się przydatne „w przyszłości” (obecnie) dla smartfonów, jak coś w rodzaju „ wypadek ”
Marc.2377,
3
Ta odpowiedź wydaje się nie odpowiadać na pytanie, mimo że została zaakceptowana. Ta odpowiedź wydaje się odpowiadać „Dlaczego mogę chcieć dodatkowych rdzeni w telefonie?” co nie jest pod ręką. To nie wyjaśnia różnicy między komputerem a telefonem. Podane informacje o tym, dlaczego telefon może chcieć więcej rdzeni, dotyczą również komputerów stacjonarnych, zwłaszcza te dotyczące gier.
Aaron
8
Oświadczenie z 1976 r. Dotyczące procesorów x86 jest nieco mylące. Rdzenie ARM mogą być datowane na projekt Acorn RISC Machine w 1983 r., Zaledwie 7 lat później, i pod pewnymi względami nowość jest zaletą, Acorn nauczył się kilku rzeczy, które były złe podczas opracowywania x86 i podobnych konstrukcji procesorów, i włączył to do RAMIĘ.
user1937198
2
Również RISC vs CISC nie ma z tym nic wspólnego, procesory Intela obsługują rdzeń RISCish wewnętrznie (ups). Rzeczywistą różnicą jest brak lub zamówienie w realizacji zamówienia.
user1937198
5
Ta x86 jest całkiem… nie tak. Są to układy superskalarne, podstawowe implementacje nie byłyby tak dobre, jak klasyczny potok RISC stosowany w większości układów ARM. Warto również zauważyć, że łączenie rdzeni z projektami super-skalarnymi jest BARDZO trudne ze względu na wykonanie poza kolejnością i hierarchię pamięci podręcznej. Nikt nie wiedział, czego brakuje, więc tak naprawdę nie było na to popytu. Jeśli zauważysz, że niektóre z nowszych iteracji Intels nie znajdują się w układach o wysokiej liczbie rdzeni - są na Broadwell, to dlatego, że odrzucają synchronizację - z braku miejsca.
Alec Teal
15

Powód jest równie prosty, co skomplikowany.

Krótka odpowiedź brzmi „ponieważ rynek telefonów komórkowych nigdy nie był i nie jest napędzany przez Intel”.

Długa odpowiedź jest o wiele za długa, aby ją tu wznowić, ale podstawową koncepcją jest to, że Intel dominował na rynku komputerów PC od lat wszelkimi możliwymi środkami, do tego stopnia, że ​​płacił i korumpował (i został za to ukarany), aby jego procesory stały się pierwszy i jedyny wybór dla producentów komputerów.

Pełna kontrola nad rynkiem pozwoliła Intelowi zawyżać ceny procesorów, jednocześnie sztucznie decydując, które funkcje i ile mocy obliczeniowej powinni chcieć użytkownicy, a jeśli przeanalizujesz nieco historię Intela, zauważysz, że jego główną siłą jest wzrost częstotliwości procesorów, więc najczęściej nigdy nie próbował zrobić czegoś naprawdę inteligentnego lub innowacyjnego; i nie potrzebował tego, ponieważ może po prostu powiedzieć ludziom: „nie potrzebujesz więcej rdzeni, ale mam te nowe, soczyste procesory, które działają o 100 MHz szybciej”. Jednocześnie może sprzedawać procesory wielordzeniowe na rynku serwerów po absurdalnie wysokich cenach (ponieważ serwery zawsze potrzebowałyton równoległej mocy, do tego stopnia, że ​​istnieje trend w próbach realizacji serwerów, które używają ... zgadnij co? Setki tanich procesorów telefonicznych pracujących równolegle)

To z kolei znalazło odzwierciedlenie w społeczności programistów, która nigdy nie zrozumiała znaczenia programowania równoległego, tak więc wielu, jeśli nie większość z nich, nigdy nie zadawało sobie trudu używania więcej niż jednego wątku na raz - lub, aby wyrazić to w sposób technicznie, ponieważ ich oprogramowanie wykonuje więcej niż jedno zadanie na raz. Co, nawiasem mówiąc, ma sens, gdy 99% bazy klientów ma maksymalnie dwa rdzenie. Niestety doprowadziło to do legendy, że algorytmy równoległe są naprawdę trudne do wdrożenia i dotyczą tylko niewielkiej części problemów.

Zamiast tego wreszcie rynek mobilny nigdy nie widział sukcesu Intela; wręcz przeciwnie, w rzeczywistości, ponieważ przez większość czasu Intel próbuje zrobić coś innego niż zwykła architektura X86. Tak więc brakuje wpływu i kontroli rynku, inny producent procesorów poszedł w kierunku, który był normalny od wieków poza rynkiem komputerów osobistych: przetwarzanie równoległe.

motoDrizzt
źródło
12
Czy na pewno odpowiadasz na właściwe pytanie ?
iBug
7
@iBug Ta odpowiedź dotyczy pytania PO lepiej niż zaakceptowana odpowiedź. Przyjęta odpowiedź to taka, która nie odpowiada na właściwe pytanie.
Aaron
6
„sztucznie zawyżają ceny procesorów” -> Jeśli Intel sztucznie zawyżał ceny, to dlaczego ich konkurencja używa sprzętu o podobnej cenie i dlaczego komputery z procesorem ARM są tak mocno ssące w porównaniu ze sprzętem Intela? Ta nienawiść do inteligencji jest absurdalna. Tworzenie procesorów jest trudne . Tym, co uczyniło ARM tak popularnym wśród urządzeń mobilnych, był pomysł Big.LITTLE, coś, co wymyślili przed Intelem.
T. Sar
6
Intel nie kontroluje rynku układów komputerowych i od wielu lat nie ma. Powodem, dla którego projektanci chipów przeszli z szybszych zegarów na więcej rdzeni, jest to, że szybsze zegary uderzają w pewne podstawowe ograniczenia fizyczne. Więcej rdzeni stanowiło znacznie trudniejszy problem do rozwiązania, dlatego odłożyli go, aż stał się najbardziej opłacalnym sposobem na zwiększenie wydajności.
Kevin Krumwiede,
6
Jest to bardziej obraźliwe wobec złej korporacji Intela, na którą IMO nie jest zasłużone, ponieważ ARM skręca również niezależnych producentów układów z licencjami.
Dmitrij Grigoryev,
9

Działają dwa czynniki, jeden bardzo praktyczny, a drugi historyczny.

Praktycznym powodem jest zastosowanie architektur mieszanych w telefonach. Zużycie energii ma zasadnicze znaczenie dla telefonów, a telefony spędzają dużo czasu w trybach, w których wymagają one bardzo małej wydajności. Sensowne jest zoptymalizowanie niektórych rdzeni pod kątem minimalnego zużycia energii, gdy wymagana jest niewielka wydajność, a zoptymalizowanie niektórych rdzeni w celu zapewnienia maksymalnej wydajności, gdy jest to potrzebne.

Drugi powód jest w dużej mierze historyczny. Do około 2005 r. Wszystkie komputery stacjonarne były pojedynczymi rdzeniami. Poprawa wydajności procesora pulpitu polegała prawie wyłącznie na stworzeniu rdzenia, który może wykonywać jak najwięcej instrukcji na sekundę. Nawet dzisiaj tak wiele programów komputerowych nie może w pełni wykorzystać wielu rdzeni, że wiele osób wolałoby procesor z 4 rdzeniami niż 8-rdzeniowy procesor z rdzeniami o 20% wolniejszy.

Uzyskanie jak największej wydajności z jednego rdzenia wymaga ogromnej ilości procesora. To nieruchomości, które w innym przypadku mogłyby zostać wykorzystane do zapewnienia większej liczby rdzeni. Właśnie dlatego najnowsze procesory Kaby Lake Intela mają maksymalnie 4 rdzenie, a ludzie kupują je, ponieważ każdy rdzeń jest szybszy niż rdzenie ich poprzedników. Dla wielu są to ulepszenia nawet z procesorów o większej liczbie rdzeni.

Z czasem spodziewaj się, że znacznie więcej oprogramowania komputerowego będzie w pełni zoptymalizowane do obsługi większej liczby rdzeni. Gdy tak się stanie, kompromisy inżynieryjne zaczną faworyzować więcej rdzeni nad szybszymi rdzeniami na komputerach stacjonarnych. Chociaż rdzenie prawie na pewno będą jeszcze szybsze, zaczniesz widzieć ludzi preferujących 8-rdzeniowy procesor zamiast 4-rdzeniowego procesora, nawet jeśli każdy rdzeń jest o 20% wolniejszy. Projektanci układów podążą za rynkiem.

David Schwartz
źródło
5

Bardzo ważne jest, aby telefon był w stanie zapewnić moc obliczeniową w krótkich seriach (potrzebujemy szybkich aplikacji), ale także aby uniknąć przegrzania (rozpraszanie ciepła jest znacznie trudniejsze dla telefonów niż dla laptopów lub komputerów stacjonarnych). Aby to osiągnąć, architekci projektują telefony tak, aby korzystały z jednego rdzenia, gdy obciążenie jest niewielkie, i zapewniały dodatkowe rdzenie, aby zwiększyć wydajność, gdy jest to potrzebne. Gdyby telefony używały mniejszej liczby rdzeni, przegrzanie stanowiłoby problem, nawet jeśli obciążenie jest dość niewielkie.

Źródło: Absolwent kursu architektury komputerowej.

Tara Eicher
źródło
Mówiąc prawdę, zdolność do dostarczania mocy obliczeniowej (jeśli to rozumiesz przez energię ) w krótkich seriach jest również kluczowa dla komputerów stacjonarnych. Właśnie dlatego mają TurboBoost na układach Intel.
Dmitrij Grigoryev,
Tak, mam na myśli moc obliczeniową. To prawda, że ​​wszystkie urządzenia, które w pewnym momencie mogą spodziewać się dużego obciążenia (w tym telefony i komputery stacjonarne), muszą sobie z tym poradzić. Główną różnicą jest rozpraszanie ciepła.
Tara Eicher
Zgadzam się z tym, co powiedziałeś, chciałem tylko podkreślić, że obciążenie nie jest specyficzne dla telefonów.
Dmitrij Grigoryev,
2

Po pierwsze, wirtualna maszyna Java może w przeszłości czerpać więcej korzyści z wielordzeniowego oprogramowania niż typowe oprogramowanie komputerowe. Nawet jeśli napiszesz aplikację jednowątkową w Javie, będzie działać szybciej na wielordzeniu, ponieważ większość kodu modułu wyrzucania elementów bezużytecznych będzie działać razem z twoją aplikacją.

Po drugie, w tle na telefonie dzieje się wiele rzeczy: automatyczne aktualizacje, pobieranie reklam, oprogramowanie antywirusowe, zarządzanie modułem GSM itp. Na laptopie wszystkie te zadania ledwo zajmowałyby jeden rdzeń, ale rdzenie ARM są znacznie mniej wydajne, więc jeśli chcesz mieć responsywny system, możesz chcieć mieć przynajmniej kilka z nich przeznaczonych do zadań w tle.

Wreszcie jest marketing. Niewielu użytkowników jest w stanie ocenić, czy skorzystaliby z 8 rdzeni, ale 8-rdzeniowy smartfon z pewnością brzmi drożej niż 2 lub 4-rdzeniowy.

Dmitrij Grigoriew
źródło
2
Ciągle widzę wypowiedzi w stylu „Rdzenie ARM są znacznie mniej wydajne” - co to dokładnie oznacza? Mają mniejszą prędkość zegara?
Abdul,
2
@ Abdul mniej operacji na sekundę. Układy x86 mogą wykonywać kilka operacji jednocześnie, więc przewyższają ARM nawet przy tej samej częstotliwości zegara. Sprawdź to porównanie : górną procesor ARM (GT-I9100) jest około 10 razy wolniej niż górnym układzie x86 (i7-2920XM).
Dmitrij Grigoryev,
Czy „operacje na sekundę” są synonimem FLOPS?
Abdul
@Abdul Niekoniecznie. W rzeczywistości, oprócz gier i symulacji fizycznych, zmiennoprzecinkowy nie jest tak często używany. Ponadto wiele układów ARM osiąga przyzwoite FLOPS, osłabiając precyzję, więc nie jest to jedyny prawdziwy pomiar.
Dmitrij Grigoriew
Aplikacje na Androida nie działają na wirtualnej maszynie Java. Rzucają się na Dalvik VM
phuclv
1

Dotychczasowe odpowiedzi wyjaśniają niektóre aspekty problemu prowadzącego do tak dużej liczby rdzeni procesorów w telefonach z Androidem. Przeczytaj to jeszcze raz; Telefony z Androidem. IPhone od dawna utknął w zaledwie kilku rdzeniach i nadal działa znacznie płynniej niż jakikolwiek flagowy system Android.

Projektanci Androida podjęli ogromny hazard, decydując się na wybór oprogramowania Java, aw konsekwencji JVM jako środowiska wykonawczego aplikacji. Java, ze względu na swoje zasady projektowania, rozwiązuje problem konieczności kompilacji i kompilacji kodu dla każdej architektury procesora, zanim będzie można na nim uruchomić, poświęcając wydajność. Java wprowadza ciężką i nieporęczną maszynę wirtualną zwaną zwykle JVM. JVM faktycznie emuluje procesor na poziomie oprogramowania, aby uniknąć konieczności osobnego kompilowania kodu dla każdego urządzenia. Pomyśl o JVM jako o wirtualnym procesorze, który ma te same właściwości niezależnie od uruchomionego urządzenia, więc kod musi zostać skompilowany tylko raz dla JVM, a następnie można go uruchomić na każdym urządzeniu. Pozwala to producentom na rzucenie dowolnego sprzętu, zanim będą musieli martwić się kompatybilnością aplikacji.

Sama maszyna JVM jest jedynie specyfikacją, a ludzie mają swobodę opracowywania własnej maszyny JVM, o ile jest ona zgodna z tą specyfikacją. Oryginalny JVM na Androida nazywał się Dalvik. Obecnie Google zastąpił to ART.

Jaki jest problem z JVM? Jest to duże oprogramowanie, które zużywa wiele zasobów obliczeniowych. Dodaj do tego niektóre inne właściwości języka Java, takie jak Garbage Collection, a zużycie zasobów JVM staje się po prostu zbyt duże dla urządzenia o skromnej mocy sprzętowej. Każda aplikacja i usługa systemowa otwarta na twoim urządzeniu jest sama instancją ART JVM i do tej pory możesz stwierdzić, że zarządzanie nimi wszystkimi wymaga naprawdę sprawnego sprzętu. Sprawa będzie jeszcze gorsza, gdy zajdzie potrzeba rysowania interfejsów użytkownika.

Każda aplikacja działa na wielu wątkach. Każdy rdzeń procesora może działać tylko jeden wątek na raz. Każda aplikacja ma jeden główny wątek, w którym wykonuje czynności związane z interfejsem użytkownika. Może być o wiele więcej wątków na aplikację do uzyskiwania dostępu do plików, sieci itp. Zasadniczo więcej aplikacji (i usług systemowych) jest otwartych niż rdzeni procesora, w wyniku czego zwykle jest o wiele więcej wątków niż rdzeni procesora. Każdy rdzeń musi więc ciągle przełączać się między przetwarzaniem różnych wątków, wykonując trochę każdego z nich i przechodząc do następnego. Przełączanie zajmuje dużo czasu procesorowi, aw przypadku aplikacji będących w zasadzie maszynami JVM, zadanie to staje się jeszcze bardziej wyczerpujące.

Na podstawie tego wyjaśnienia można wywnioskować, że Android potrzebuje wydajnego sprzętu, aby działać płynnie. Wczesne generacje urządzeń z Androidem słynęły z opóźnień, awarii i wielu innych niefortunnych rzeczy. Ale z biegiem lat problemy te zostały w większości rozwiązane dzięki silnemu sprzętowi.

Z drugiej strony aplikacje iOS są kompilowane do natywnego kodu maszynowego, a zatem nie wymagają wirtualizacji. Użyty język i system operacyjny są również bardziej wydajne, dzięki czemu urządzenia te pozostają płynne bez konieczności korzystania z chipsetu z nadmiarem.

DarthPaghius
źródło
To miłe wytłumaczenie, dlaczego telefony komórkowe są znacznie wydajniejsze niż komputery stacjonarne. A może nie?
maaartinus
„Dzięki temu producenci mogą rzucić dowolny sprzęt, zanim zaczną martwić się kompatybilnością aplikacji.” - dobra uwaga, ale nie jestem pewien, czy taki był zamiar stworzenia systemu przeznaczonego (pierwotnie) do kamer.
v6ak
„Może istnieć o wiele więcej wątków na aplikację do uzyskiwania dostępu do plików, sieci itp.” - są one raczej związane z operacjami wejścia / wyjścia i nie zużywają dużo procesora. Czasami operacje we / wy są obsługiwane tylko przez jeden wątek, ponieważ procesor jest znacznie szybszy niż urządzenia we / wy.
v6ak
„Wczesne generacje urządzeń z Androidem były znane z opóźnień, awarii i wielu innych niefortunnych rzeczy” - pamiętam, że korzystałem z Marshmallow na takim telefonie (Xperia Mini Pro) i myślę, że istnieje wiele innych powodów, aby być wolniejszym niż procesor. Działają na niskiej pamięci RAM, mają wolniejsze urządzenia flash, takie jak MTD (znacznie wolniejsze niż karty microSD w przypadku niektórych operacji), starsze androidy miały mniej wydajną „JVM” (co technicznie nie jest JVM). Jasne, lepszy procesor też pomaga, ale do takiego wniosku daleko mi jeszcze.
v6ak
Ponadto styl programowania, taki jak wykonywanie operacji we / wy (lub innych długich operacji) w wątku interfejsu użytkownika, może powodować opóźnienie aplikacji niezależnie od wydajności procesora. AFAIK, ten styl jest dość powszechny we wczesnych aplikacjach na Androida. Takie aplikacje mogą być opóźnione nawet w nowoczesnych telefonach. Prawdopodobnie będą mniej opóźnione, ale to bardziej ze względu na szybsze pamięci flash niż szybsze procesory lub więcej rdzeni.
v6ak
0

Wracając do powyższego, mogę powiedzieć, że przypadki użycia komputera i telefonu są zupełnie inne. Komputer najczęściej używany w jednej lub kilku aplikacjach (oczywiście przeglądarka z wieloma kartami wymaga wielu rdzeni procesora, może opóźniać się nawet na górze i-3), telefony używane do wielozadaniowości. Przynajmniej połączenie sieciowe, rysowanie interfejsu użytkownika, wyzwalacze systemowe, powiadomienia. Jeśli otworzysz menedżera zadań na komputerze PC, istnieje również wiele procesów, ale zużywają one mniej niż kilka% mocy procesora, nawet w starym duecie Core 2. 4 rdzenie są dość tanie (MTK 65x2 kosztował 1 USD na początku dla OEM) Jest to również RYZYKO vs CISC, gdy ostatni brak wydajności na rdzeń. Energooszczędny! = Mocny, jak widzimy tutaj . Wielordzeniowy jest idealny na urządzenia mobilne, ponieważ nie wymaga dużego obciążenia pojedynczego bieżnika, a doświadczenie ukierunkowane na wiele zadań (ale widzimy, że iPhone'y potrzebują mniej rdzeni i pamięci RAM z powodu dobrego oprogramowaniajak w tym filmie lub innych )

Flippy
źródło
Wiele z tych czynności często wykonuje się również na laptopie. A wielozadaniowość nie musi wymagać procesora. Różnica w kosztach produkcji może powodować pewne różnice i może być przyczyną mniejszej liczby rdzeni dla niskoprocesorowych procesorów, ale wątpię, aby koszty produkcji były jedynym powodem, dla którego nie wszystkie i7 mają co najmniej cztery rdzenie. Uważam, że koszty produkcji to tylko niewielki ułamek ceny tych procesorów.
v6ak
@ v6ak, problem polega na tym, że rdzenie x86 są większe i bardziej skomplikowane, procesory Intel (lub AMD) po prostu nie są wystarczająco dobre, aby być najlepszym modelem. W rzeczywistości większość z nich ma zablokowane niektóre części i staje się junior i7 lub Pentiums. Rdzenie ARM wyglądają na mniej skomplikowane, więc każdego roku przybywa niewiele modeli. Nadal prawdziwym oktowym rdzeniem był Samsung Exynos Octa 7xxx , MTK Helio X10 , Najnowsze (X30) nawet proponują niewiele (4) .Średnia (4) .BIG (2), możemy jej w reklamach, że jest to 10 rdzeniowy procesor, tani marketing robi to
Flippy
-1

Myślę, że jednym z głównych czynników napędzających poza 4 lub 8 (dla dużych: małych konfiguracji) jest właśnie marketing.

Jednym z ogromnych problemów związanych z wysoką liczbą rdzeni jest rozważenie wielkości pamięci. Zwykle w aplikacjach komputerowych, gdy chcesz poprawić wykorzystanie wielu rdzeni, musisz powielić struktury i zużyć znacznie więcej pamięci niż w jednej aplikacji wątkowej.

Nie dzieje się tak, ponieważ pamięć RAM jest bardzo droga (szczególnie w sytuacji kryzysowej pamięci RAM 2017/2018). Marketing chce wysokich liczb, ale kontroling chce obniżyć ceny komponentów. Jeśli widzisz saldo mniejsze niż 1 gigabajt pamięci RAM na rdzeń, oznacza to nieudany kompromis.

Lothar
źródło