新的Google Pixel 2 / Pixel 2 XL有很多尚未发现的东西。当Google突然宣布新的智能手机内置了一个定制的图像处理器称为Pixel Visual Core时,Google便在科技界拔得头筹,尽管尚未启用。在Pixel 2上,我们还发现了另一件有趣的事情,尽管我们不确定100%知道此新功能的全部含义。该功能称为硬件加速网络共享,可以通过将与数据包转发和其他网络共享相关职责的所有逻辑卸载到硬件上,从而延长移动数据网络共享期间的电池寿命。

Google Pixel 2或Pixel 2 XL的现有所有者可以在“开发人员选项”的“网络”类别下找到该功能。默认情况下已启用它,因此大概已经在这些设备上运行了。在Android开源项目(AOSP)中,我们可以在“ tether-offload ”标签下看到一些与该功能相关的提交。我们可以看到,将智能手机的数据限制 传递给卸载代码是合理的,这样就不会超过您的数据限制。

最重要的是,我们可以看到“ 系链卸载HAL ” 的实现。硬件抽象层(HAL)是允许Android系统与SoC中的WiFi芯片进行接口的功能,该芯片将处理硬件加速的网络共享。Android使用此HAL将来自Android的数据包转发的所有负担分担到专用于它的硬件上。

最终结果是,专用于移动数据共享的系统资源将被释放用于其他目的。设备的CPU负责网络绑定相关操作的次数越少,节省的功率就越多。当设备进入睡眠状态时,此功能特别有用,因为当前基于Android的基于软件的网络共享需要使用唤醒锁使CPU保持唤醒状态。通过将网络共享的责任转移到硬件上,CPU也许可以真正进入睡眠状态— 延长网络共享时间可以延长电池寿命。

那么哪些设备支持硬件加速网络共享?好吧,到目前为止,我们仅在Google Pixel 2 / Pixel 2 XL上找到了切换开关,因此我们假设只有那些设备支持它。根据网络共享卸载HAL提交,看来Google正在测试对Google Nexus 5X(bullhead)的支持。此外,根据Google员工的一些评论,网络共享卸载HAL似乎与供应商无关:

虽然此HAL确实有一些关于Qualcomm设置的怪癖,但其中绝大多数与供应商无关。从理论上讲,任何拥有适当功能的SoC的供应商都可以通过它支持网络共享硬件卸载(他们可能会跳过设置时传递的额外fd,这是众所周知的)。

在另一条评论中,一位Googler提到了设备如何混合和匹配WiFi芯片组并减轻HAL的负担,但是它们构建的API仍旨在在网络共享时充分利用设备的最佳电池寿命。

在最顶部,我们定义此API将返回静态配置。根据供应商/硬件的实现,这些功能可能会发生变化。例如,一个设备可以具有来自供应商A的wifi,并可以从供应商B卸载HAL。而另一台设备可以具有来自供应商B的Wifi芯片组并可以从供应商B卸载HAL。在这种情况下,卸载功能可能有所不同。即使功能有限,框架/客户端也可能希望利用有限数量的硬件卸载功能。因此,API的设计可以从硬件中获取最多的收益,因为不同的SOC实现可能会有差异。

如果您拥有Google Pixel 2 / Pixel 2 XL并希望查看硬件加速绑定的状态,则可以输入以下ADB Shell命令 并查找与“硬件卸载”相关的字符串:

我们必须进行测试,以实际了解硬件加速的网络共享如何有效地延长网络共享。网络共享曾经也曾在性能上造成巨大损失,但是Android上CPU速度的大幅提高和优化已在很大程度上解决了该问题。因此,我们不希望通过卸载HAL将绑定逻辑卸载到WiFi芯片组会导致性能显着提高。