英译中:Intel x86 Atom和Atom_64系统镜像有什么区别?

108

我正在使用Android SDK管理器为Android M预览版安装系统映像。但是,我注意到x86平台有两个不同的映像。

输入图像描述

这两者之间有什么区别,并且在我的64位Ubuntu 15.04安装中应选择哪一个?(我的CPU包括AMD-V,并且BIOS已启用,如果有任何区别)


5
据我所知,它们仅仅是仿真不同的CPU架构,就像ARM、ARM64、MIPS等一样。 - CommonsWare
6
使用哪种集成开发环境(IDE)并不重要,与此相关的是你正在模拟哪种硬件。Atom vs Atom_64镜像的区别在于,你想要在一个配备Atom CPU或Atom 64位CPU的设备上模拟运行你的应用程序。 - hungryghost
2
看起来一个是32位CPU镜像,另一个是64位的。 - Phantômaxx
请查看此类似问题的顶级答案(https://dev59.com/alwY5IYBdhLWcg3w5bTt); 在我看来,比下面的答案更清晰的解释。 - ToolmakerSteve
4个回答

73

根据这个文章

随着Google最近发布了其x86 64位Android 5.0模拟器镜像,开发者可以为基于Intel Atom处理器的设备创建64位应用程序。

Android 32位 vs 64位

今天许多64位平台,包括Solaris、AIX*、HP-UX*、Linux*、OS X*、BSD和IBM z/OS*,都使用LP64模型。由于Android基于Linux内核,因此Android 64位平台也使用LP64模型。

Intel 64位CPU具有32位兼容模式。虽然32位应用程序可以在64位处理器上运行,但使用64位优化编译器进行编译可以使它们利用64位环境的架构优势

如何在模拟器上运行64位应用程序

根据Intel Atom处理器64位系统镜像创建新的Android虚拟设备(AVD),并在SDK Manager或ADT中打开AVD Manager。然后点击“创建”,并按照图示填写字段。现在64位AVD模拟器已准备就绪。

enter image description here

64位Android*操作系统

默认情况下,所有32位应用程序都可以在64位处理器上无缝运行,但可能比针对64位处理器运行的应用程序运行速度慢。

Android已准备好进行64位处理

从32位到64位芯片的转变的一个关键好处现在主要是理论上的:支持超出吉字节的RAM,而不仅仅是吉字节。但64位芯片处理内存的方式也可以在某些任务中导致性能提高。

摘要

具有面向基于Intel Atom处理器的平台的64位技术的Android现在可以帮助开发人员优化其应用程序。为64位构建Android应用程序与构建传统的32位Android应用程序一样容易。您现在可以使用官方的Android 64位模拟器来运行和调试64位应用程序。

也许这些文章可以帮助您了解此系统映像之间的差异。

更新

谷歌现在鼓励使用x86仿真器,正如您可以在此图片中看到的那样。

enter image description here

使用x86映像的区别在于,在适当的条件下(HAXM),它现在使用快速的硬件加速虚拟化,因此感觉就像没有了一个笨重的中间层。

1
你提到了使用“64位优化编译器进行编译”的应用程序。那么,如何使用64位编译器编译我的应用程序,并在64位环境中运行时获得优势? - Artem M
3
在开发 AVD 时,我们是否应该使用“Intel x86 Atom 系统镜像”以获得更快的模拟器速度? - iraj jelodari
16
如果我们不关心目标架构,那么本质问题是:在64位英特尔CPU上,“Atom_64”仿真器是否运行得更快?从你冗长的回答中我无法得知答案。而且你提到的“x86”只会让人更加困惑,因为问题涉及到两个镜像的选择,它们都提到了x86,唯一的区别在于提到了Atom vs Atom_64。 - ToolmakerSteve
@ToolmakerSteve 我确实有同样的疑虑。而且我发现现在每个软件包都变得相当大了,因此选择正确的软件包非常关键,以避免填充不必要的数据路径。 - Carmine Tambascia
你的帖子底部的更新是否意味着使用HAXM的Atom比Atom_64更快? - Bink

16

提示:在官方的Android Studio 文档中指出,“x86系统镜像在模拟器中运行最快。”

我没有尝试过64位的,因此无法对此发表评论。或许其他人可以。


2
不回答问题,问题是关于选择两个不同的“x86”系统映像之间的选择,其中一个还提到“atom_64”,另一个提到“atom”。 - ToolmakerSteve

10

我尝试过x86和x86_64,发现x86_64比x86略慢。 经过一番研究后,我发现x86可以在32位基本指令集和64位基本指令集上运行,而x86_64只能在64位上运行,这需要进行更多的解码...

您也可以在此处查看https://developer.android.com/ndk/guides/x86-64.html以获取更多信息。


1
第一句话是有用的信息。其余部分的答案基本上是混乱的,因为“x86_64”是指您正在模拟的设备,而不是您在运行模拟器的PC。底线:除非您要测试特定目标架构上的某些微妙差异,否则选择哪个都无所谓。 - ToolmakerSteve
1
@ToolmakerSteve,这取决于硬件的仿真方式,特别是是否可以通过硬件虚拟化技术直接使用主机CPU。 - andho
@andho你能详细解释一下吗?我有点困惑;那么在我的系统上模拟哪个更快/更轻/更容易?x86还是x86_64? - buncis
1
@buncis 如果你的CPU支持VT(大多数都支持),并且在BIOS中启用了它,并且在操作系统中安装了必要的模块,那么x86和x86_64应该具有类似的速度,因为仿真器指令直接在主机CPU上运行。 如果没有VT,则使用软件仿真。在这种情况下,x86比x86_64更快/轻/易,因为需要较小的地址空间来模拟x86而不是x86_64(例如,64位注册表与32位注册表)。 - andho

2

x86指的是32位系统。现在我已经阅读了以上所有答案,我将直接点明重点。

x86 Atom -> 32位Intel CPU与32位Android模拟器

x86 Atom_64 -> 32位Intel CPU与64位Android模拟器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接