技术中心
 
 

Android 多媒体系统集成的复杂性

   日期:2015-06-01    
核心提示:随着多媒体内容的使用频次越来越高,消费者对于处理多媒体音频和视频流、以及运行基于图形的高级应用程序所具备的成熟技术,也提出高于以往的要求,这些驱动着智能手机、平板电脑和其他智能移动消费者产品的演进,促使这些设备不仅要内置复杂程度较高且功能越发强大的多媒体子系统,而且还要不断地提升能效。

随着多媒体内容的使用频次越来越高,消费者对于处理多媒体音频和视频流、以及运行基于图形的高级应用程序所具备的成熟技术,也提出高于以往的要求,这些驱动着智能手机、平板电脑和其他智能移动消费者产品的演进,促使这些设备不仅要内置复杂程度较高且功能越发强大的多媒体子系统,而且还要不断地提升能效。

Android是目前市场上使用最广泛的移动设备操作系统。根据市场分析组织IDC在2014年底发布的报告,Android在智能OS业务方面占据主导地位,以2014年来看,搭载Android平台的设备出货量约为10亿台,所占的市场份额大于80%;而未来几年,其领先地位将继续维持。 Android在平板电脑市场也占据主导地位,2014年在全球的出货量超过1.5亿台设备,所占市场份额大约在65% - 70%之间。

基于此,本文将详述Android多媒体系统开发过程中面临的一些集成问题,这些问题会给移动设备制造商和开发商带来严峻的挑战,尤其是集成来自多个供应商的组件和技术时,这些挑战将更加突现;另外,并将探讨ARM知识产权(IP)和技术如何大幅简化OEM和系统集成商的流程,进而加快产品开发速度、显著降低风险。

Android多媒体系统

Android及其多媒体系统的发展是一个复杂度不断提高、持续演变的过程。自从十年前Android被推出以来,迄今已整合了许多新功能和优化,如通过 Wi-Fi传输至TV的移动显示器传输、新的视频编解码器等。上述所有功能的新增对于系统开发人员意义深远,因为他们在每次发布全新OS时,需要完成大量软件驱动程序的工作。图1显示了Android自2009年以来提供的新功能时间线。在此期间,ARM除了支持将这些驱动程序部署至数百种不同的设备之外,还为九种不同版本的Android系统(从éclair至Lollipop)以及八代ARM Mali图形处理器硬件提供了驱动程序的支持。

 

图1– Android多媒体框架的演变

依据图2(此图实际是简化示意图)所示,Android OS已经非常复杂了。当然,Android的持续演变带来了更多的挑战。图2显示了OS常用用户空间组件与用于提供Android用户体验的基础软件驱动程序、内核组件和硬件之间的交互。

 

图2 - Android多媒体子系统概览

如果使用了来自不同供应商的多媒体组件,则会产生额外的复杂性,导致的结果是,首先需要将三个或更多个软件驱动程序单独集成至平台,然后再开始着手相互集成,以便实现较好的系统性能。然而,如果集成的过程不太理想,或者不同的组件无法使用相同标准的接口相互通信,则会导致功能平台运行较慢、耗费过多的功率,最糟的情况则可能会同时出现这两者。

集成的细微差异

基于与Android设备制造商的长期密切合作,ARM经历了大量常见的集成挑战,尤其是在“零拷贝zero-copy”多媒体管线(media pipeline)方面。尽管面临的挑战非常多,但依然有一些潜在的解决方案可以应对。传统的零拷贝多媒体管线主要目的是消除复制开销,然而当两个或多个多媒体处理硬件设备在内存中共享同一缓冲区空间时,就会出现问题,并且也会以一些非常不同的方式进行通信。软件驱动程序需要选择数据在缓冲区中的存储方式,如像素格式,并确保在GPU完成写入之前,显示器不会读取缓冲区。与组件相互通信的潜在集成问题有关的关键领域包括内存分配协商、像素格式协商和同步。

●内存分配协商对于系统集成设计商来说是一个关键的领域,它可以决定系统图形缓冲区的内存分配位置和方式。分配内存时需要考虑到访问内存的底层硬件具备的多项限制。有多个重要问题有待解决,例如,所有组件是否都带有系统MMU(内存管理单元)?如果不是,那么执行某些分配时需要将部分内存分配为连续的物理内存,以确保所有组件均可以读取该内存。适用于所有目标组件的理想内存对齐方式是指什么?例如,不同的硬件对于它想要如何在内存中对齐该内存的像素有不同的限制。如果缺乏对系统中每个组件的这种了解,在处理图形缓冲区时则可能会出现部分内存访问非常低效。基础物理地址宽度是另一个问题,即系统集成设计商可能拥有传统的32位内部显示管线,不能处理较大的内存块(例如,可以通过ARMv8 64位架构处理的内存块)。

是否存在某些组件无法访问的特定内存区域?或者它们必须访问的特定区域?Gralloc模块由Android的编译引擎用来分配和管理适用于2D和3D图形用途的内存。ARM提供的Gralloc库可以理解ARM多媒体处理器的所有系统限制,并且能够与Android内核的ION分配程序(一个统一的共享内存系统)配合运行,确保可以针对系统中的每个处理器执行最合适且高效的内存分配。软件驱动程序由ARM多媒体处理器用于实施标准Linux DMA缓冲区内存共享功能。如果所有驱动程序使用同一接口,则同一分配可以由一个处理器写入并由另一个处理器读取,从而为平台上的所有图形和视频内容提供零拷贝路径,确保仍能够维持尽可能低的内存带宽开销。

●像素格式协商是需要在系统集成期间关注的第二个领域。务必确保多媒体IP解决方案中的每个组件(不论是视频、GPU还是显示)实际上均能够理解来自其他组件的图形输出格式,以及确保每个组件生成的内容均能够以某种格式被其他组件读取。例如,尽管视频处理器可能能够以五种不同的YUV格式写出视频帧,如果显示处理器不支持其中的任何格式,则只能使用GPU功能在显示器上合成视频。或者,如果显示处理器不理解带有预乘Alpha值(大多数Android用户界面所使用的)的像素格式,则显示处理器将成为美化过的帧缓冲区控制器。最后,即便组件能够完全理解32位RGBA像素格式,出于某些未知的原因,显示的应用程序仍将出现反转的颜色。这会导致在开发过程中浪费大量时间,因为不仅需要追踪哪个组件在排序方面(比如32位像素格式的红色和蓝色组分)与其他一切不一致,而且还需要研究如何对它们进行反转。

●同步是第三个领域,此处旨在尽可能异步运行以减少排队和延迟。主要问题在于,当系统中存在零拷贝路径、并且两个或多个设备正在直接使用同一个内存时,这些组件之间的同步将变得极为重要。例如,如果显示处理器在GPU或视频处理器完成写入之前便开始从缓冲区中进行读取,则会导致屏幕出现奇怪的伪像。在较早的Android版本(Jellybean之前)中,渲染流水线中的每个组件通过执行以下一系列步骤处理和控制Android用户空间的同步:处理软件驱动程序中的命令;在硬件中执行其任务;等待任务在驱动程序中完成;以及将责任传递给管线的下一阶段。尽管这会使组件之间的同步方法变得简单容易,但也会造成管线出现暂停间隙,从而使流畅视觉内容之间出现差异并且中断最终用户体验。但是,一种全新同步化方法Android Fences已添加至平台;只要软件驱动程序支持它们,则允许在管线的每个阶段针对其组件执行CPU端处理和排队工作,即便前一阶段尚未在硬件中完成。这将大幅缩短一个硬件完成与下一个硬件开始之间的间隔。然而,要充分利用Android Fences的优势,还需要渲染管线中的每个组件均支持它们。如果所有组件均支持Android Fences,但其中一个组件出现漏洞,则会出现问题。如果三个或更多个不同供应商提供的软件驱动程序均支持 Android Fences,但其中一个出现漏洞,则很难进行追踪、并且需要与多个供应商一起执行三项单独的调查。同时还有可能出现此种情况:只有当某个供应商的组件使用标准接口与其他供应商的组件进行通信时,该漏洞才会显现出来。

ARM多媒体技术

如上所述,Android多媒体子系统开发过程中遇到的基本问题是,从多个供应商采购组件和解决方案(无论是包含内部开发的部件还是由诸如半导体供应商之类的外部公司提供),这意味着将对产品质量和/或开发进度产生影响。而可以向OEM、系统集成商和硅片供应商提供显著帮助的解决方案即为ARM的预集成多媒体堆栈。自开发首款移动电话以来,ARM一直致力于与其合作伙伴合作,一同开发可以在固定功耗预算范围内、持续扩展移动设备功能的技术。因此,ARM在多媒体IP以及处理因集成高度复杂的视频和图形技术而产生的系统级问题方面具有丰富的经验。ARM产品的核心在于,可以在图形、视频和显示处理器内核、系统级SoC优化技术领域提供广泛的多媒体技术组合。

●ARM Mali GPU系列是指一系列广泛的产品,可以进行扩展以便为移动细分市场内外的各类设备提供丰富的消费者体验,适合高端和主流市场,包括:

ARM Mali-T820:提供多功能和效率的最佳组合,可以向下一代主流移动设备交付丰富的用户界面和卓越的内容,并采用尽可能小的硅片面积维持最佳性能的ARM特色产品;

ARM Mali-T830:其每个着色器内核的计算能力高于Mali-T820,能够为主流移动设备的消费者带来诸如高级3D游戏等更复杂的内容;

ARM Mali-T860:可从一个内核扩展至十六个内核,经过优化,能够为高端移动设备市场带来具备卓越性能效率的复杂图形和计算内容;

全新Mali-T880,旨在为温度受限的移动和消费者平台带来高端复杂的用例,能效较之前一代提高了40%.附加的算术能力和可扩展性支持可支持类似游戏机的高级游戏体验。

Mali-T860和Mali-T880均本地支持10位YUV,为最佳4K内容提供令人惊叹的视觉表现,并且与Mali-V550视频处理器和Mali-DP550显示处理器的配置相得益彰。

●ARM Mali-V550视频处理器是下一代低带宽、多核、多重编解码的编码器/解码器,提供IP业界首个适用于HEVC(高效率视频编码)编解码器(包含8位和10位HEVC解码和8位HEVC编码)的单核视频编码/解码解决方案。它可以在单核上集成编码和解码功能,并且能够在多个编解码器上最大程度地重复使用,确保设备交付高级别的硅晶片面积效率。

●ARM Mali-DP550显示处理器是最新一代的ARM显示技术,其增强功能可以将合成、缩放、旋转以及图像后处理等任务从GPU或CPU卸载到专用处理器,省去了写出到内存的必要,进而节省功率。该设备的硅片面积非常小、能耗低,额外支持多达七层的合成,同时还集成了ARM的节能技术。

系统级优化技术

与此同时,有数项系统级优化技术可供系统集成商使用,并且能够为ARM的多媒体处理器组合提供补充。这些技术包括ARM帧缓冲压缩(ARM Frame Buffer Compression, AFBC)、智能消除(Transaction Elimination)、智能合成(Smart Composition)以及动作搜索消除技术(Motion Search Elimination)。

●ARM帧缓冲压缩(AFBC)是一项无损图像压缩协议和格式,可以解决在移动设备的散热限制内,构建愈加复杂的设计时所面临的困难。基本上,它最大限度地减少了SoC内不同IP块之间的数据传输量,并且可以降低在整个系统内传输空间协调图像数据所产生的整体系统级带宽和电力成本。其无损压缩率在业界处于领先地位,典型情况下可高出50%,而算上限制性的最坏情况比率,通常情况下高出80%.AFBC提供低至4x4块级别的细粒度随机访问,该随机访问支持在SoC设计内的其他IP块中应用AFBC.在Android多媒体系统环境中,AFBC通过集成至显示、视频和GPU驱动程序的私有接口在ARM Gralloc驱动程序中启用。

AFBC可用于所有ARM Mali视频处理器、显示处理器、以及Mali-T760及更高版本的图形处理器,并且还作为可授权的单独IP块与SoC中的其他多媒体块一同使用。

●智能消除(TE)是ARM Mali GPU架构一项重要的带宽节约功能,可在SoC系统级别上显著节省能源。在执行TE时,GPU将当前帧缓冲与之前渲染的帧相比较,仅对改动过的部分进行局部更新,因而大大减少了每一帧需要传输到外部内存的数据量。这一比较是在每区块基础上执行的,运用循环冗余检查(CRC)签名来判断区块的改动情况。 CRC签名一致的区块完全相同,因此消除它们对生成的图像没有任何影响。无论帧缓冲的精度要求是什么,TE都可以供各应用程序用于GPU支持的所有帧缓冲格式。TE是一项非常有效的技术,即便对于“第一人称射击游戏”而言也是如此。然而,由于在用户界面和休闲游戏等许多其他常用图形应用程序中,两个连续帧之间的帧缓冲大部分保持不变,因此TE带来的帧缓冲带宽节约最高可达99%.和Android多媒体系统集成中的AFBC一样,“智能消除”可通过ARM Gralloc驱动程序启用,并且与GPU驱动程序集成。

●智能合成(SC)是另一项旨在降低带宽的技术,同时可以在帧合成期间读入纹理。该技术可以将标准Android用户界面纹理读取带宽降低50%以上。通过在最后帧合成之前分析帧,SC将确定是否存在要渲染帧的给定部分原因,或者它是否可以重复使用之前渲染和合成的部分。如果可以重复使用这一部分的帧,则无需重新从内存中读取并重新进行合成,因此将节约更多读取带宽和计算量。在Android多媒体系统环境中,“智能合成”将显示为EGL扩展(EGL_KHR_partial_update),供Android内的‘SurfaceFlinger’和‘HWUI’组件使用(见图2)。

●动作搜索消除技术(MSE)既是智能消除的扩展,也是一项可在Mali-DP550显示处理器和Mali-V550视频处理器中实施的新功能。该技术旨在解决一种不断增长的需求:将音频/视频数据从移动电话、平板电脑和其他消费者设备无线传输至电视屏等大屏幕。发送和接收设备均必须支持使用诸如 H.264视频编解码器等算法执行视频流压缩。在典型用例下,显示处理器并不会将帧缓冲传输至显示面板,而是将其写入内存,随后视频编解码器将读取该内存以对帧进行编码,并通过Wi-Fi网络发送压缩的帧。显示处理器和视频处理器均维护每个区块的CRC签名,当显示处理器写出帧缓冲时,视频处理器可以为签名匹配的区块消除运作搜索。运作估算是视频管线中最消耗资源的部分,因此跳过所选区块的搜索将降低Wi-Fi传输的延迟以及带宽消耗,进而降低SoC的整体功耗。同AFBC和智能消除一样,动作搜索消除技术也通过ARM Gralloc启用,这有利于将CRC数据从Mali-V550视频处理器的Android视频驱动程序传输至Mali-DP550显示处理器的 HWComposer驱动程序。

驱动程序均支持Android Fences,但其中一个出现漏洞,则很难进行追踪、并且需要与多个供应商一起执行三项单独的调查。同时还有可能出现此种情况:只有当某个供应商的组件使用标准接口与其他供应商的组件进行通信时,该漏洞才会显现出来。

Android对于优化集成的期望

ARM提供一整套现有的图形、显示和视频处理器驱动程序,可以通过预先集成和优化来实现联合操作。根据一致的设计和验证方法,如果设计中实施了基于ARM Cortex CPU以及ARM CoreLinkTM互连、ARM Mali GPU、视频和显示处理器的SoC,将能够针对每个处理器使用一同高效运行的Android软件驱动程序。

 

图3 - ARM的Android多媒体子系统解决方案

适用于Android的ARM多媒体堆栈(见图3)将消除集成和优化来自不同供应商的处理器时面临的挑战,并简化支持常规Android更新的任务。利用 ARM预先优化的软件,OEM和硅片供应商可以关注其解决方案的差异化,并加快产品入市步伐。尽管Android多媒体系统集成绝对称不上简单,此种方法仍不失为开发人员面临诸多问题时的可能解决方案,并且将大幅简化流程、压缩开发时间、降低风险以及加速产品上市时程。

 
标签: Android 多媒体
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢