35

单线程应用程序是否使用四核手机中的所有 4 核。我搜索了很多,发现一些文章说是,有些说不是。有些文章甚至说 android 操作系统不使用 4 核。

android 是否能够在四核处理器中使用所有 4 个内核?

单线程应用程序是否使用多核?

4

3 回答 3

21

答案是肯定的。

Android 基本上建立在使用多核的 Linux 内核之上。就单线程应用程序而言,请记住一个线程不能同时在不同的内核上部分执行。所以你的单线程虽然可以在不同的时间点被不同的核心执行,但不能同时被不同的核心细分执行。

话虽如此,但请注意,像高通这样的芯片组制造商正在开发智能处理器,能够将您的单线程应用程序代码(当且仅当存在互斥部分)细分为多个线程并在不同的内核上运行。同样,基本原理保持不变——为了利用多核,将单个线程细分为多个线程。

为了充分利用您的多核芯片,您宁愿创建一个多线程应用程序,具有尽可能多的异步线程,以便对最大数量的内核进行最佳利用。希望这能清除。

编辑:

这也转化为 - 不使用多个异步线程(或任何其他并行结构)的应用程序不会使用多个内核。

于 2013-05-15T10:48:21.467 回答
10

在基于四核 CPU 的移动设备上,操作系统可以根据当前 CPU 负载和任务/活动优先级将工作负载动态分配给适当的 CPU 内核。例如,如果两个 CPU 内核忙于处理较长的任务,例如 Android 应用程序更新、文件压缩和媒体处理,则操作系统可以立即将触摸输入等延迟敏感任务分配给可用的第三或第四个内核,以提供更快的响应速度。当有多个任务同时运行时,如果有多个内核可用于处理这些请求,则可以更快地处理来自这些任务的排队请求。

Android 操作系统是从 Linux 演变而来的,因此具有对多任务和多线程的原生支持。最新版本的 Android 2.3 和 Android 3.0/3.1/3.2 添加了多项功能,可提高操作系统利用多核 CPU 处理能力的能力。Firefox 和 Webkit 等移动浏览器基于其桌面浏览器,因此本机包含对多线程的支持。Android 3.0 附带的新浏览器不仅支持多线程,还支持分页浏览。这些浏览器能够利用多核 CPU 提供的增强处理能力来提供更快、更好的 Web 浏览体验。

以下图片将描述更多:

此图显示了在浏览流行的纽约时报网站时四核 CPU 系统的每个内核的利用率。从图中可以看出,浏览器使用了四核 CPU 的全部四个核心,这种并行处理带来的网页浏览体验比基于双核 CPU 的移动设备上的 6 快得多。四核 CPU 还为支持选项卡式浏览的浏览器提供更高的性能。

CPU 利用率

下图显示了在 Web 浏览器中打开多个选项卡时四个 CPU 内核的 CPU 利用率。事实上,选项卡式浏览使用大量 CPU 处理,如图所示,甚至可能使四核 CPU 的所有四个核心都饱和。

选项卡式浏览

Android OS 应该利用所有内核的原因:(因为我是 Android 开发人员,所以原因与 Android 开发人员的观点有关)

由于移动游戏的快速增长,开发人员正在将流行的 PC 和主机游戏引擎移植到移动环境中。这些游戏引擎最初是为多核台式 PC 平台开发的,因此将利用移动处理器中的多核 CPU 为移动游戏玩家带来立竿见影的好处。四核 CPU 为游戏开发人员提供了强大的处理能力,并使开发人员能够包括高级物理效果、人工智能、碰撞检测/避免、虚拟纹理、更好的网络可玩性等。四核 CPU 和可变 SMP 技术将使移动设备能够进一步推动性能极限,并允许应用程序和游戏开发人员提供新的移动体验,同时延长最流行用例的电池寿命。

随着手机游戏的复杂性和视觉丰富度的增加,可下载游戏内容的相应文件大小也大幅增长。通常,游戏文件太大,以至于下载游戏所花费的时间超过了购买后为用户在不喜欢该游戏时要求退款提供的十五分钟退款时间。这不仅使购买者感到沮丧,而且使购买者不愿购买需要大文件下载的高级游戏。

实时动态纹理生成技术允许游戏开发人员对游戏进行编码,从而根据游戏的叙述和状态实时创建游戏中所需的纹理。由于纹理是动态生成的,因此不必在购买时提供。使用这种技术,游戏开发人员可以将游戏文件大小减少几个数量级。看看 4 核 CPU 游戏中的以下场景变化。

游戏场景变化

于 2013-05-28T12:32:38.910 回答
7

是的。Android 3.0 是该平台的第一个版本,旨在在单核或多核处理器架构上运行。

即使是单线程应用程序也可以受益于不同内核上的并行处理

例如,如果您的应用程序使用媒体服务器,则媒体处理和 UI 渲染应用程序逻辑可以同时在不同的内核上运行。此外,垃圾收集器可以在不同的核心上运行

说你使用的图形。要呈现相同的效果,您的应用可以使用多核。您可以在下面的链接中检查相同的内容。

https://youtu.be/vQZFaec9NpA?t=459(图形和性能)

http://android-developers.blogspot.in/2010/07/multithreading-for-performance.html

检查这个pdf。向下滚动到幻灯片 22。可能有用

http://elinux.org/images/1/11/Application-Parallelization-Android-KlaasVanGend.pdf

于 2013-06-03T18:27:01.547 回答