Jaka jest różnica między obrazami systemu Intel x86 Atom i Atom_64?

97

Używam Menedżera Android SDK, aby zainstalować obraz systemu dla podglądu Android M. Zauważyłem jednak, że istnieją dwa oddzielne obrazy dla platformy x86.

wprowadź opis obrazu tutaj

Jakie są różnice między nimi i którą należy wybrać dla mojej 64-bitowej instalacji Ubuntu 15.04? (Mój procesor zawiera AMD-V i jest włączony w BIOS-ie, na wypadek gdyby to miało znaczenie).

Nathan Osman
źródło
5
AFAIK, po prostu emulują różne architektury procesorów, podobnie jak ARM, ARM64, MIPS itp.
CommonsWare
5
Nie ma znaczenia, jakiej maszyny używasz jako swojego IDE. Ma to związek z emulowanym sprzętem. Tak więc obrazy Atom vs Atom_64 określają, czy chcesz emulować uruchamianie aplikacji na urządzeniu z procesorem Atom czy 64-bitowym.
Hungryghost
2
Wygląda na to, że jeden to 32-bitowy obraz procesora, a drugi to 64
bitowy
Zobacz najlepsze odpowiedzi na to podobne pytanie ; IMHO jaśniejsze wyjaśnienie niż poniższe odpowiedzi.
ToolmakerSteve,

Odpowiedzi:

68

Zgodnie z tym artykułem

Dzięki niedawnemu wydaniu przez Google obrazu emulatora 64-bitowego systemu Android 5.0 dla systemów x86 programiści mogą tworzyć aplikacje 64-bitowe dla urządzeń z procesorem Intel Atom.

Android w wersji 32-bitowej i 64-bitowej

Wiele dzisiejszych platform 64-bitowych, w tym Solaris, AIX *, HP-UX *, Linux *, OS X *, BSD i IBM z / OS *, korzysta z modelu LP64. Ponieważ Android jest oparty na jądrze Linuksa, 64-bitowe platformy Android również używają modelu LP64.

64-bitowe procesory Intel mają 32-bitowy tryb zgodności. Podczas gdy aplikacje 32-bitowe będą działać na procesorach 64-bitowych, kompilacja za pomocą 64-bitowego kompilatora optymalizującego umożliwia im wykorzystanie zalet architektonicznych środowiska 64-bitowego .

Jak uruchamiać aplikacje 64-bitowe na emulatorach

Utwórz nowe urządzenie wirtualne z systemem Android (AVD) oparte na 64-bitowym obrazie systemu procesora Intel Atom i otwórz Menedżera AVD w programie SDK Manager lub ADT. Następnie kliknij „utwórz” i wypełnij pola, jak pokazano na rysunku. Teraz 64-bitowy emulator AVD jest gotowy do uruchomienia.

wprowadź opis obrazu tutaj

64-bitowy system operacyjny Android *

Domyślnie wszystkie aplikacje 32-bitowe działają bez zakłóceń na procesorach 64-bitowych, ale mogą działać wolniej niż aplikacje dostrojone do działania na procesorach 64-bitowych.

Android jest gotowy do przetwarzania 64-bitowego

Jedna z kluczowych korzyści płynących z przejścia z 32-bitowych na 64-bitowe chipy jest obecnie w dużej mierze teoretyczna: obsługa eksabajtów pamięci RAM, a nie tylko gigabajtów. Ale sposób, w jaki 64-bitowe układy obsługują pamięć, może również prowadzić do poprawy wydajności w niektórych zadaniach.

Podsumowanie

Android z technologiami 64-bitowymi dla platform opartych na procesorach Intel Atom może pomóc programistom w optymalizacji ich aplikacji . Tworzenie aplikacji na Androida dla 64-bitowych jest tak samo łatwe, jak tworzenie tradycyjnych 32-bitowych aplikacji na Androida. Możesz teraz używać oficjalnego 64-bitowego emulatora Androida do uruchamiania i debugowania aplikacji 64-bitowych.

Może te artykuły pomogą ci zrozumieć różnicę między tymi obrazami systemu.

Aktualizacja

Google zachęca teraz do używania emulatora x86, jak widać na tym obrazku

wprowadź opis obrazu tutaj

Różnica polega na tym, że podczas korzystania z obrazów x86 wykorzystuje teraz szybką, przyspieszaną sprzętowo wirtualizację w odpowiednich warunkach ( HAXM ), więc nie wydaje się, że jest już gruba warstwa środkowa.

Jorge Casariego
źródło
1
Wspomniałeś o aplikacjach, które „kompilują się za pomocą 64-bitowego optymalizującego kompilatora”. Jak więc skompilować moją aplikację za pomocą kompilatora 64-bitowego i uzyskać przewagę, działając w środowisku 64-bitowym?
Artem M
3
@Jorge Casariego powinniśmy używać intel x86 atom system imagepodczas programowania przez AVD dla lepszej szybkości emulatora?
iraj jelodari
9
Ale jeśli nie dbamy o architekturę docelową, podstawowe pytanie brzmi: czy emulator „Atom_64” działa szybciej na 64-bitowym procesorze Intela? Nie mam pojęcia z twojej długiej odpowiedzi. A twoja wzmianka o "x86" jest po prostu myląca, ponieważ pytanie dotyczy wyboru między dwoma obrazami, z których oba wspominają o x86, które różnią się tylko tym, że wymieniają Atom vs Atom_64.
ToolmakerSteve,
@ToolmakerSteve Rzeczywiście mam te same wątpliwości. Widzę również, że teraz każdy pakiet stał się dość duży, więc wybranie tych właściwych jest krytyczne, aby wypełnić niepotrzebnymi danymi ścieżkę
Carmine Tambascia
15

FYI: W oficjalnej dokumentacji Android Studio jest napisane, że „obrazy systemu x86 działają najszybciej w emulatorze”.

Nie próbowałem 64-bitowego, więc nie mogę tego komentować. Może ktoś inny może.

Algiver
źródło
1
Nie odpowiada na pytanie, które dotyczy wyboru między dwoma różnymi obrazami systemu „x86”, z których jeden wspomina również o „atom_64”, a drugi o „atomie”.
ToolmakerSteve
9

próbowałem obu i x86_64 jest trochę wolniejszy niż x86. po krótkich badaniach dowiedziałem się, że x86 może działać na 32-bitowym zestawie instrukcji i 64-bitowym, podczas gdy x86_64 działa tylko na 64-bitowym, co wymaga trochę więcej dekodowania ...

możesz też sprawdzić tutaj https://developer.android.com/ndk/guides/x86-64.html, aby uzyskać więcej informacji.

X-czarny ...
źródło
1
Pierwsze zdanie to potencjalnie przydatna informacja. Reszta tej odpowiedzi jest zasadniczo niejasna, ponieważ „x86_64” odnosi się do urządzenia, które emulujesz , a nie do komputera, na którym uruchamiasz emulator. Podsumowując: nie ma znaczenia, który wybierzesz, chyba że testujesz pod kątem subtelnej różnicy w zachowaniu na określonej architekturze docelowej.
ToolmakerSteve
@ToolmakerSteve ma znaczenie, w jaki sposób emulowany jest sprzęt, zwłaszcza jeśli procesor hosta może być używany bezpośrednio za pomocą technologii wirtualizacji sprzętu.
andho
@andho możesz rozwinąć więcej? Jestem zmieszany; więc który z nich jest szybszy / lżejszy / łatwiejszy do emulacji w moim systemie? x86 lub x86_64
buncis,
1
@buncis, jeśli twój procesor obsługuje VT (większość tak) i masz go włączoną w BIOS-ie i niezbędne moduły zainstalowane w systemie operacyjnym, to zarówno x86, jak i x86_64 powinny mieć podobną prędkość, ponieważ instrukcje emulatora są uruchamiane bezpośrednio na procesorze hosta. Jeśli VT nie jest dostępny, używana jest emulacja oprogramowania. W tym przypadku x86 jest szybszy / lżejszy / łatwiejszy, ponieważ mniejsza przestrzeń adresowa musi emulować x86 niż x86_64 (np. Rejestr 64-bitowy vs rejestr 32-bitowy).
andho
2

x86 oznacza system 32-bitowy. Teraz przeczytałem wszystkie powyższe odpowiedzi i od razu przejdę do sedna.

x86 Atom -> 32-bitowy procesor Intel z 32-bitową symulacją Androida

x86 Atom_64 -> 32-bitowy procesor Intel z 64-bitową symulacją Androida

Gagan Yadav
źródło