




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10页:ARM Cortex-A9 内核微架构特点Cortex-A9 的代号为 Falcon,是在 ARM 公司在 2007 年 10 月 3 日发布的 IP core,距今大约有五个年头。Cortex-Ax 这个名字中后缀 A 表示属于 Application(应用处理器),Cortex 另有 M 系列(即单片机或者微控制器)、R 系列(实时应用),这里显然是 A 系列的规格最高,具备 MMU(内存管理单元)。基于 Cortex-A9 的芯片实现有前面提到的 NVIDIA Tegra 2/Tegra3、Apple A5/A5X 以及 TI OMAP4430/4440、ST-爱立信 NovaThor U8500/U9500/LT9540、STM SPEAr1310、三星 Orion/Exynos 4210、华为 K3V2、ZiiLabs ZMS-20/ZMS-40、Sony CXD5315GG(PSV)、联发科 MT6577、华为海思 K3V2 等等,是目前 Google Android 操作系统高端手机、智能平板阵营中最主流的 CPU 内核。Cortex-A8 微架构Cortex-A9 微架构Cortex-A9 的前身是 Cortex-A8,它们同属于 ARMv7 ISA 的实现,和 Cortex-A8 相比,Cortex-A9 除了流水线更短、增加了专门的多核方案等大家熟知的变化外,还具备多项改进。1、Cortex-A9 拥有众多 RISC CPU 的先进特性,例如推测数据存取、动态分支预测、多指令发射、硬件 Cache 一致性、乱序执行、寄存器重命名,号称史上第一枚乱序执行移动处理器。除了双指令发射和分支预测外,Cortex-A8 都并不具备,因此在 Cortex-A9 上汇编码优化、NEON SIMD 的重要性相对来说要低很多(经过调优的汇编码在 A8 上可以做到 10-30 倍性能,而 A9 一般只会有 2-5 倍,如果是 A9 使用 NEON C Intrinsics 的话性能基本上和汇编一样)。2、Cortex-A9 的每条 L1 Cache Line 是 32 字节,Corte-A8 是 64 字节。Cache Line 又称作 data block(数据块)或者 Cache Block,Cache 每次更新都以固定大小的 Cache Line 为单位。Cache Line 的大小主要影响命中率、内存存取效率、发生 Cache 命中缺失时候的性能惩罚时间。3、Cortex-A9 的 L2 Cache 位于“核外”( ARM 对应的方案是 PL310 或者更新一点的 L2C-310),而 Cortex-A8 则是速度更快的核内 L2 Cache。从对 Cortex-A8 1GHz(三星 Samsung Hummingbird,即 Exynos 3110)和 CortexA-A9 1.2GHz(三星 Exynos 4210)实测来看,A8/A9 的 L1 cache 延迟分别为 3 周期和 4 周期,L2 Cache 延迟(含 L1 Cache 延迟但是不含 L1/L2 TLB 命中缺失惩罚的情况下)分别为 13 周期和 23 周期。4、Cortex-A9MPCore 的各内核 L1 Cache 采用了数据、代码分离式设计,L1 数据 Cache 具备硬件 Cache 一致性。各个内核共享外部 L2 Cache。5、Cortex-A9 具备完整的 VFPv3 FPU,而 Cortex-A8 则只有缩水版的 VFPlite,主要区别是 Cortex-A9 的大多数浮点操作都只需要 1 个周期,而 Cortex-A8 需要 10 个周期,因此 Cortex-A8 的浮点性能相当烂。6、Cortex-A9 支持半精度(fp16),而 Cortex-A8 只支持 32-bit 单精度(FP32)和双精度(FP64),不过半精度在 CPU 级别的应用并不是很多见。7、Cortex-A9 不能同时发射两条 NEON 指令,而 Cortex-A8 却能够实现 1 条 NEON L/S 指令搭配一条非 L/S NEON 指令。8、Cortex-A8 的 NEON 单元位于 ARM 单元下游,所以 NEON 单元访问寄存器和内存更快,而且数据可以很快从 ARM 寄存器搬到 NEON/VFP 单元寄存器,但是将 NEON/VFP 寄存器数据搬到 ARM 寄存器的话就非常慢,会导致 Cortex-A8 的流水线停摆 20 个周期。9、Cortex-A8 的 NEON 和 ARM 各有一个分离的 L/S 单元,如果一起对同一块 Cache Line 进行 Load 或者 Store 操作的话,会导致额外的 20 个周期延迟。10、Cortex-A9 对多线程化同步采用 LDREX/STREX,不会杜塞所有的内核,而 Cortex-A8 对互斥使用简单的断禁制。11、所有的 Cortex-A8 都集成了 NEON SIMD 单元,但是 Cortex-A9 则未必,例如 NVIDIA Tegra 2 就没有集成 NEON,不过 Tegra 3 则具备 NEON。如果使用 7-zip(不包含任何浮点)实测来看,Cortex-A8 1GHz 的压缩(受内存时延、数据 Cache 大小和速度以及 TLB 影响较大)/解压缩(受 CPU 整数性能影响较大)性能相当于 Core i7 920 2.67GHz 的 3.5% 和 5.5%;而 Cortex-A9 双核则是 Core i7 920 的 8.8% 和 12.7%。第11页:ARM Cortex-A15 内核微架构特点代号 Eagle 的 Cortex-A15 是在 2012 年 9 月发布的 ARMv7 架构实现,是 ARM 首次引入三路指令解码的微架构 IP core,目前三星的 Exynos 5 5250(双核,32nm HKMG,1.7GHz)是市场上能看到的第一波 Cortex-A15 产品,Chromebook、Nexus 10(均在 2012 年 10 月发布)都采用了这枚芯片。和 Cortex-A9 相比,Cortex-A15 有非常明显的变化:1、整数流水线最短工位数达到 15 级,管芯面积占用比 Cortex-A9 高一倍。2、采用三路超标量微架构,可以每个周期取指四条指令,解码器每个周期可以为发送单元提供 3 条指令,而指令发射单元可以乱序提供最高 8 个微操作供执行单元运行。相比之下,A9 的解码器只能每周期跑两条指令,派发单元每周期派发 4 个微操作给执行单元。3、Cortex-A15 的动态分支预测技术和 Cortex-A8/A9 差不多,但是 A15 引入了一个 64 条目的 microBTB,而此前的 A8/A9 并不具备这样的分层结构。动态分支预测能力是影响现代风格处理器的关键因素之一,像 Pentium 4 的 BTB 是 4K 条目,SandyBridge 据说达到 8K16K。虽然 A15 的两级 BTB 条目总数较 A8/A9 少,但是 A15 的 Return Stack 条目数从 8 条增加到了 18 条,取指带宽从之前的 64-bit 提升到 128-bit,而且完全支持边界非对齐地址的拾取。4、Cortex-A15 支持 VFPv4,具备硬件 FMA 指令执行,可以在同频下提供两倍的峰值浮点性能。此外,A15 还具备硬件除法指令,在 A9 上这需要接近 50 个周期来执行。5、A15 的周边总线为 AMBA4,128-bit master 界面,A9 的 AMBA3 的 master 界面是 64-bit。6、虽然 ARMv7 是 32-bit ISA,但是现在 Cortex-A15 支持 40-bit 物理定址(类似于当年的 Pentium Pro 和 Atlhon),而且 L1/L2 Cache 具备 ECC,因此理论上适用于服务器级应用。7、A15 和 A9 都有一个类似的 small loop 缓存,用于存放小循环,让执行单元无需访问指令 cache 就能抓到指令。在 A9 上它可以存放大小为 64 字节的指令。而在 A15 上则是 32 条目,可以存放两条前转分支和一条后转分支,而且 A15 的 small loop 缓存存放的是已经解码的微操作,这意味着连解码步骤也能节省掉。这类似于 Intel 的做法:先在 Conroe 上引入 loop buffer,然后在 Nehalem 引入 uop loop buffer(28 条目),到了 SandyBridge 则彻底改成了 uop cache(1500 个 uop),逐步改进。Cortex A15 的整数性能为 3.54.01 DMIPS/MHz,相比起 A9 的 2.5 DMIPS/MHz 和 A8 的 2.0 DMIPS/MHz 有明显的改进,不过因为三路超标量而带来的各种资源增加,A15 需要更先进的制程(32 纳米或更先进)才能在手机、平板上变得比较适用。第12页:高通 Krait 内核微架构特点上图是高通 2012 年 11 月于分析者日会议上公布的 AP 产品路线图虽然 2012 年年初的时候 NVIDIA Tegra 3 大放异彩,但是到了临近年末的时候,高通的 Snapdragon 4 Pro APQ8064 却已经是成为了几乎所有性能导向新 Android 手机的主角,其中一个重要原因就是它采用的 Krait 微架构能提供对手不具备的特性。Krait 微架构是高通第四代 Snapdragon(骁龙)处理器所搭配的 CPU 内核微架构,是 ARMv7 架构的实现,属于高通的 ARM 架构级授权、自行研发的处理器内核微架构。Krait 的前身是 Scorpion,在产品布局上它和 Scorpion 有些类似,例如 Scorpion 定位于 Cortex-A8 和 Cortex-A9,而 Krait 的定位也是类似,即 Cortex-A9 和 Cortex-A15 之间,具备一些 Cortex-A15 的特征。例如 L0 cache(Cortex-A15 上有类似作用的 loop buffer,相当于 L0 I-cache,指令调度器无需经过解码器就能抓到小循环的微操作指令)、三路超标量、VFP4 浮点单元、128-bit SIMD 处理能力(高通称 SIMD 单元为 VeNum,ARM 自己则称之为 NEON)以及基于 A15 同级的半导体制程节点。至于有人说 Krait 是 A9 的改进版,这样的观点我很难认同,它和 Scorpion 都类似于当年 DEC 获得 ARMv4 ISA 授权而自行研发的微架构。不过另一方面,Krait 的乱序执行要逊色于 Cortex-A15,后者具备八个指令发射端口和八个执行端口,每一个执行端口都对应一个(准)保留站(有些类似于 AMD K7-K10),而 Krait 只有四个指令发射端口和七个执行端口,并且采用的是类似 Cortex-A9 或者说 Pentitum Pro 方式的单个大规模指令发射队列单元。微架构对比ARM vs 高通ARM11ARM Cortex A8ARM Cortex A9ARM Cortex A15Qualcomm ScorpionQualcomm Krait解码能力单路双路双路三路双路三路整数流水线8 级13 级8 级15 级10 级11 级乱序执行否否是是部分是浮点单元VFP11(流水线式)VFPv3(非流水线式)可选 VFPv3(流水线式)VFPv4(流水线式)VFPv3(流水线式)VFPv4(流水线式)SIMD(NEON)不具备具备(64-bit)可选 MPE(64-bit)具备(128-bit)具备(128-bit)具备(128-bit)半导体制程90nm65nm/45nm40nm32nm40nm28nm典型频率412MHz600MHz/1GHz1.2GHz2GHz1GHz1.5GHz在现实测试中,Krait 的表现和它的微架构一样,提供了比 Cortex-A9 更强的性能,在对单线程性能较高的应用中,即使是双核版的 Karit 都可以比四核 Cortex-A9 更快。第13页:苹果 Swift 内核微架构特点正如我们前面提过的,苹果公司在上世纪九零年代就已经和 ARM 合作并且提供了一些微架构设计上的修改方案,因此苹果对 ARM 一点都不陌生甚至有非常丰富的经验。从 iPad、iPhone 4/iTouch 4、Apple TV 2 开始,苹果开始真正介入 ARM 芯片设计,推出了名为 A4 的自行设计 ARM 处理器。A4 采用了 ARM 授权的 Cortex-A8 IP Core,但是苹果找来了 Intrinsity 公司(已经被苹果收购)和三星公司合作进行了一些调优,可以让 A4 的频率跑得比基于上一代制程的 Cortex-A8 更快。曾经有说法认为 A4 的 L2 cache 大小是 640KiB,但是后来确认修正为 512KiB(这是 ARM Cortex-A8 内核的可选配置方式之一)。A5 系列依然是采用 ARM IP core,从 Cortex-A8 升级为 Cortex-A9 双核,不过整个 A5 系列出现了三个版本,即 APL0498、APL2498、APL5498(A5X),三个版本的芯片面积各不一样,其中 A5X 的 GPU 是四核 PowerVR 5 并且拥有 4 通道内存总线,定制化设计在这里体现得非常明显。真正的定制化设计是从 A6 开始,苹果公司给 A6 搭配的 CPU 内核是完全有自己团队开发的 Swift,不仅这样,苹果还提出了一个新的名字:ARMv7s。传统上,ARMv7 是属于 ISA 版本名称,不过 ARMv7s 至今都并未出现在 ARM 官网的公开资料里,因此 ARMv7s 可能并非 ARM 的产物,而是苹果自己在 ARMv7 基础上做的一个架构优化定义,让编译器可以为 Swift 微架构匹配对应的调优,本质上 ISA 还是 ARMv7A。CPUiPhoneiPadiPod TouchApple TVISA内核芯片名称ARMv7sApple SwiftApple A6X4Apple A65ARMv7AARM Cortex-A9Apple A5X3Apple A5mini4S253ARM Cortex-A8Apple A44142三星 S5PC1003GS3(32/64GB)ARMv6ARM 1176JZ(F)-S3(8GB)3211那么 Swift 和以往的 Cortex-A9 相比有哪些改进呢?苹果公司并未详细说明,传统上这家公司就是这样,千方百计捂着,不过 Anandtech 利用一些自己编写的微型基准测试程序进行了一些探测,以程序员的角度大致估量出了 Swift 的微架构是长得如何了。在前端部分,Swift 具备三个指令解码器,可以每个周期完成三条指令的解码,而在指令分发器上,具备五个发射端口,浮点单元、整数单元各占两个,还有一个专供 Load/Store 单元使用,具备乱序执行能力、整数流水线深度为 12 级,cache 子系统的时延比 Cortex-A9 低了差不多一半。“ARMv7s”的设立估计就是让编译器获知编译执行对象是 Swift,这样就能对各种指令顺序进行一些预调度,确保尽可能低的 CPI。简而言之,A6 系列就是采用了比 A5 系列更先进制程和微架构的产物,其中的 CPU 内核则是苹果首次真正完全执行开发的设计,未来是否会在 GPU 上也有类似的动静将会是值得关注的。第14页:英特尔 Bonnell/Saltwell 内核微架构特点Atom 是英特尔计划实现 x86 anywhere 战略的重要产品,为此它不惜卖掉了口碑不错的 Xscale 系列 ARM 处理器部门给 Marvel,从 2008 年 3 月发布迄今已经有了 45nm 和 32nm 两代制程,产品型号可以说是多如牛毛,就代号而言,有最初的 Silverthrone、Diamondville,然后经过制程改进,分别有了 Lincroft 和 Pineview,“新近”的 Cedarview 则是源自 Pineview。不过这么多型号,到目前为止它们所基于的内核微架构都是 Bonnell。第一代的 Atom 处理器(Silverthrone)是 45 纳米高性能制程制造,但是需要另外搭配一个 TDP 两瓦的 130nm 制程芯片组,这枚 Atom 虽然有低于 1 瓦的版本,但是此时很多功能都被关闭,性能很弱,考虑到那个芯片组,根本不会有人拿这个做手机产品。两年后的 Lincroft 集成了 GPU、视频单元以及内存控制器,采用专门的 45 纳米 SoC 工艺制成,但是依然需要搭配一个代号 Langwell、由台积电 65nm 制程生产的 I/O 芯片,两者合起来的名字叫 Morrestown 平台,这个系列中的 Z600 被尝试用来做了一两款手机,但是太高耗电的问题使得它们依然难以成为智能手机市场的竞争者。到了 2012 年,名为 Medfield 的新平台似乎让英特尔的支持者看到了些许的曙光,因为在经过三次制程技术和三个不同的设计后,现在英特尔终于有了一个可以在耗电上达到智能手机要求的低功耗产品,这个平台中基于 32 纳米 SoC 制程的 Penwell 芯片集成了代号 Saltwell 的内核,在微架构上,Saltwell 和之前所有 Atom 处理器的内核微架构其实都是几乎一样的,都属于 Bonnell 微架构,不过 Saltwell 由于采用了更精密的 32nm 制程,得以在微架构上做一些优化,因此在细节上是有一些不同的。上图为第一代 Bonnell 微架构(Silverthorne)到了 Saltwell(第三代 Bonnell)BTB 为 8096,具备 uop cacheBonnell 采用超标量流水线设计,可以每个周期执行最多两条指令,指令需要遵循一定配对原则才能实现超标量执行(类似于 Pentium 的 U/V 设计),具备 16 级工位,支持 x86_64 指令集以及最高 SSE3 扩展,但是手机版本只支持 32-bit ISA,内存容量也被限制在 1GiB,对应平板和低端笔记本等版本则打开了 64-bit ISA 支持,内存容量放宽到 24GiB。相对于当前的许多竞争对手来说,英特尔在产品技术细节公布上要大气许多,各种数据表、涉及微架构内部关键特征的编程优化手册都能在产品发布后就能公开下载到,这让我们可以更详细的为大家介绍这款产品。1、Saltwell 的分支预测器是一个具备 8096 条目(两倍于 Bonnell 4096 条目)的全局式分支预测器;2、Lincroft 时代引入的 48 字节后段取指缓存(post-fetch instruction buffer)在 Saltwell 里升格为一个高速缓存(Cache),以便减少 Saltwell 的重复取指。该技术类似于 Conroe/Merom 的 Loop Stream Detector(循环指令流侦测器),前面我们在介绍 ARM Cortex 微架构的时候也有提到类似的技术。3、Saltwell 的 L1 I-Cache 是 32KiB 8 路相关联,L1 D-Cache 是单端口 24KiB 6 路相关联。4、Saltwell 的指令发射端口依然和 Bonnell 那样是采用 Pentium 配对式发射风格的 U/V 流水线设计;5、Saltwell 能实现更多的整数指令配对以及更快的 memcopy 微代码规则。6、加入了不间断时间标签计数器(TSC)和本地 APIC 计时器,主要是为了协助电力管理和减少唤起 CPU 的情况。7、L2 Cache 维持之前的 512-KiB 8 路相关联设计,运行于内核同频,读取带宽为每周期 32 字节(256-bit),可支持 32 个待发 cache 请求。改变的地方主要是 L2 Cache 的电压轨线与内核是分开了的。例如 Saltwell 内核的 Vmin 是 0.7 伏特,L2 Cache 则在固定的 1.05 伏特电压轨线上跑,这样的设计有助于减少 C6(最节电模式)电力状态转换时延。8、频率变频粒度更精细。以 Z2460 为例,虽然 CPU 的最高持续频率为 1.3GHz,但是频率的变动范围达到 1.6GHz,步进粒度为 100MHz;而之前的 Z600 系列频率范围是 0.2GHz 0.8GHz 持续,最高 1.2 GHz。9、Saltwell 和之前的 Bonnell 系列微架构同样没有专用的硬件整数乘法、除法单元,这些操作都是和浮点硬件共享。10、在 Medfield 中还有一块独立分离于 512 KiB L2 Cache 外的 256KiB SRAM,位于不间断模块内,主要用图像信号处理器存放图像数据以及优化最低漏电。在 SOC 进入节电模式后,这块 SRAM 还会被用于存放架构状态,就好象 Saltwell 内核具备自己的 C6 SRAM 来存放 x86 状态,这块更大的 SRAM 则是存放整个平台的。在进入 S0ix 状态时,像图形或者视频编解码器等单元都会被关掉,它们的状态信息和配置信息都会保留在这块 256 KiB SRAM 里。第15页:ARM Cortex-A5/Cortex-A7 微架构的特点中低价位的智能手机势必成为 2013 年亮点,海量的千元以下甚至 600 元以下的智能手机、平板电脑将会在这一年推出,不过因为成本限制,它们在各方面的规格必然比更高价位的产品有所削弱,其中之一当然是必定搭载的应用处理器。中低价位市场是 ARM 所最擅长的领域,目前它的产品线中除了像当年 Apple iPhone 1 所使用的 ARM11 内核外,还有接替 ARM11 的 Cortex-A5 以及接替 Cortex-A8 的 Cortex-A7。ARM 微架构对比ARM11Cortex A5Cortex A7Cortex A8Cortex A9Cortex A15解码能力单路单路双路双路双路三路整数流水线8 级8 级8 级13 级8 级15 级乱序执行否否否否是是浮点单元VFP11(流水线式)VFPv4(流水线式)可选 VFPv4(流水线式)VFPv3(非流水线式)可选 VFPv3(流水线式)VFPv4(流水线式)SIMD(NEON)不具备可选 MPE(128-bit)可选 MPE(64-bit)具备(64-bit)可选 MPE(64-bit)具备(128-bit)半导体制程90nm40nm40nm65nm/45nm40nm32nm典型频率412MHz0.30.8GHz0.81.2GHz0.61GHz1.2GHz2GHz1、Cortex-A5 是目前 Cortex-A 系列中最低阶的内核,和 ARM11 的 1.2 DMIPS/MHz 性能相比,Cortex-A5 达到了 1.57DMIPS/MHz;2、Cortex-A5 具备 ARM 最新的 VFPv4 浮点单元和 128-bit NEON 向量处理单元。,相比之下 ARM11 只有老式的 VFP11;3、Cortex-A5 的制程为 40nm,面积是 90nm 制程 ARM11 的一半。4、Cortex-A5 可以提供单核、双核、四核等配置,像联发科就做了一个价格非常低的 Cortex-A5 四核方案,在低价位手机市场里竞争力非常强大。5、Cortex-A7 的 DMIPS 性能是 1.9 DMIPS/MHz,Cortex-A8 是 2.0 DMIPS/MHz。6、Cortex-A7 具备硬件整数除法、虚拟指令、40-bit 内存定址能力,所有 Cortex-A15 的程序都能在 Cortex-A7 上执行。7、Cortex-A7 和 Cortex-A8 类似集成了一个低时延(10 周期)的 L2 Cache。8、Cortex-A7 的整数流水线是 8 级顺序双发射,分支预测单元比 Cortex-A8 更先进,因此在分支预测能力和分支预测失败惩罚方面都会比 Cortex-A8 更好;9、虽然不能像 Cortex-A8 那样双发射浮点或者 NEON 指令,但是 Cortex-A7 的浮点单元是流水线化设计。10、在同样的制造工艺节点下,Cortex-A7 的面积是 Cortex-A8 的 1/31/2。11、Cortex-A7 能实现单核、双核、四核等配置,而 Cortex-A8 只有单核配置。12、Cortex-A7 在 ARM 的 big.LITTLE 策略中属于伴核角色,就是给 Cortex-A15 作为低负荷工作的杂役。从定位上看,我们相信 Cortex-A5 在低价智能手机市场上会有相当夺目的表现,而 Cortex-A7 作为非伴核的单独产品时则更多的会在中低价平板电脑市场上攻城拔寨。第16页:移动图形处理器形势简话目前移动图形 GPU 大致上有五个阵营,即 ImgTec PowerVR、ARM Mali、高通的 Adreno、NVIDIA GeForce ULP 以及 Vivante(中文名是:图芯),由于 Intel 下一代 Atom 中将会应用自己的 GPU,因此很快就会扩展成为六个阵营。这里的 Vivante 的人是来自 NVIDIA 的,如果你仔细看 Vivante 的文档就会发现 Vivante 的很多“市场行销式术语”都和 NVIDIA 极其相似。在这几家厂商中,做移动图形时间最长的当然是 ImgTec PowerVR 了。不仅与此,PowerVR 对于许多九十年代中就已经接触 PC 的游戏玩家来说也不陌生,当年的图形加速卡概念刚刚被炒作起来,做图形加速器(注意,不是板卡哟)的厂商多如牛毛。例如 ATi、Tseng Labs(代表作是 ET4000)、Rendtion(代表作是 Vrit 2x00)、3dfx(代表作是 Voodoo 2 三维加速芯片)、PowerVR、Bitboys、GigaPixel、Trident、S3 Graphics、3D Labs、Cirrus Logic、Alliance Semiconductor(代表作是大名鼎鼎的 ProMotion 6410,VCD 最流行的时候,6410 就是显卡代名词)、Matrox、Chromatic Research(代表作是 Mpact! 系列可编程多媒体芯片)、Number Nine(代表作是 Imagine 128,传说中的神作,当时 2D 显卡的巅峰一个是 Matrox,另一个就是 Number Nine),NVIDIA 在当时同样也只是一家刚刚起步的公司。这里有一张历史树图:/images/stories/doc/historysm.pngPowerVR 在这众多的图形芯片公司中是一家很特别的厂商。首先它是以技术授权方式将设计转让给其他芯片公司,由其他芯片公司将设计物理化后成为真正卖给厂商的芯片,其次是 PowerVR 的渲染架构是分块式延后渲染,理论上可以完全消除像素的无效重复渲染。在当时,极少有图形芯片公司是这样的方式运作以及具备这样的渲染技术,当然并不是说完全没有,除了 PowerVR 外,还有一家名为 GigaPixel 的公司也是采用授权制和具备分块式延后渲染(被称作 Giga3D 架构,具备比当时 PowerVR 兼容性更高的分块式延后渲染设计以及采用 eDRAM 的特点)的,不过这家公司出彩的时间没有几天就被 3dfx 收购,而 3dfx 的所有资产后来也被 NVIDIA 收购了,其中也包括 Giga3D。第17页:PowerVR SGX 54x MP4 GPU 微架构PowerVR 的渲染模式是 tile-based deferred rendering(分块式延后渲染)。分块式渲染(TBR)并不难理解,就是把画面切成若干个 16x32 或者 16x16 的像素块进行渲染,这样的好处是可以在芯片上建立一个中间缓存(也可以称作 Tiler Buffer,分块缓存,里面用于存放当前渲染 Tiler(像素块)的深度/蜡版帧缓存、色彩帧缓存、渲染对象等),不再需要片外的显存来存放 Z-buffer,让渲染过程中的读写尽量在片上完成,减少内存的读写。由于在中间缓存渲染的时候都是很高的精度(IEEE 32-bit),减少了以 16-bit(例如 R:G:B=5-bit:6-bit:5-bit)帧缓存模式时在内存上进行透明混合等操作时的精度损失,因此 TBR 可以较低的内存读写和占用实现高品质的输出。ARM 的 Mali、当年 Bitboys 的 Glaze3D 都属于 TBR,不过也仅此如此,它们并非 TBDR,仍然属于 IMR(立即渲染器),只有有限的 HSR 能力(例如 Early-Z、Hi-Z 之类的技术),并不能完全消除无效渲染。TBDR 是在上面的分块式渲染(TBR)基础上增加了对场景中当前屏幕画面三角形的筛选分仓(binning)的步骤,将三角形的前后位置关系标记起来并存放于片外的显存中,这样就能实现将不可见面在进入着色渲染流水线之前剔除掉,实现完全消除无效渲染。由于增加了分仓动作,贴图和着色必须等待三角形可视性问题解决后才渲染,渲染上增加了时延,所以这种渲染方式被称作分块式延后渲染。不过在 OpenGL 中缺乏专门的标记来指示一帧画面什么时候开始和结束,所以 TBDR 对一帧画面什么时候才接收到所有的三角形进行侦测将会有点麻烦,这会导致三角形分仓陷入迷失中。在 Direct3D 中有 BeginScene() 和 EndScene() 这样的标记,但是由于在几乎所有的硬件上都没有效果,所以开发人员都会懒得去用这些标记并且随意地在这些界限外使用 z-buffer,这会导致 API 无法确保 z-buffer 中存放有效的数据。PowerVR 硬件本体虽然可以把 Z-buffer 存放在片外显存中,但是代码必须编写正确。TBDR 可以减少无效渲染、实现极高的低内存占用渲染输出品质,但是它的缺点是需要做一块容量不小的片上缓存和大量的晶体管确保 TBDR 时候的兼容性,因此 PowerVR 的芯片面积一般都比 GeForce 这类 IMR(立即模式渲染器)大不少,另一个麻烦之处在于行销的时候,PowerVR 的纸面规格相当难看(当年 PowerVR3 就是搭配 SDR 作为显存上市的,而此时市场上的许多显卡都已经搭配 DDR 显存了),当然这个可以透过一些媒体测试实证加以解决。上图是 PowerVR SGX54X MP4 的微架构图,这个系列中的 PowerVR SGX 543 MP4 曾经应用于苹果 iPad 3 中的 A5X 应用处理器中,MP4 表示它是以四内核形式组成的 GPU。需要注意的是,PowerVR 说的内核是真正的内核而非 NVIDIA/AMD 那样的把单个 ALU 都当成 core 的市场行销术语,它这里的四个内核可以并行处理四个三角形渲染,NVIDIA 到了 Fermi(GTX 480)开始实现多三角形渲染,而 AMD 是在 Tahiti(7970)开始实现。在 PowerVR 54x MP4 中,每个图芯渲染计算单元被称作 Multi-Threaded Co-Processor,对应 OpenCL 的术语就是 PE(Processing Element,处理部件)。每个 PE 每个周期可以完成两个浮点操作。每四个 PE 构成一个 Pipe(渲染流水线,因此 Pipe 本质上就是一个四路 SIMD),每个 PowerVR SGX54X 内核包括四个这样的 Pipe,即 16 个 PE,故此 PowerVR SGX54X MP4 就有 64 个 PE。因此如果 PowerVR SGX 54x MP4 运行于 300MHz 的话,浮点性能就是 38.4 GFLOPS。即使是同一代的 PowerVR,不同的内核版本具体的实现细节都可能有些差别,例如 Pipe 内的 PE 数或者是每个内核内的 Pipe 数,例如 PowerVR SGX 554 MP4(Apple A6X 采用该 GPU)的每个内核有 8 条 Pipe 而非 PowerVR SGX 54x MP4 的四条。PowerVR SGX 5 被设计成统一渲染结构,即几何体顶点和屏幕像素计算都是由上面说的 PE 执行,这样的好处是让 GPU 内的计算单元可以尽量保持运作状态,而不是像分离式架构那样遇到非平衡负载的处理时候,VS(顶点计算单元)有时候在等 PS(像素着色计算单元)或者 PS 在等 VS。根据 PowerVR 的资料,SGX 54X 的每个 Pipe 内有一个线程调度器(Thread Scheduler),每个线程调度器内有 16 个线程可供派发,每次可以派发其中的 4 个线程给下面的 PE 执行。PowerVR SGX 5 系列中有明确的 API 支持规格的内核基本上都是支持 DX9.X,但是有一个特例,那就是 PowerVR SGX 545,可以实现 DX 10.1、OpenGL 3.2 支持。如果资料没有错误的话,PowerVR SGX 5 的 ALU:TEX 比例为 2:1,即每两个 PE 就会配上一个纹理单元,因
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- sap考试试题及答案
- 电网基础知识培训课程课件
- 电缆颗粒生产基础知识培训课件
- 三洲田道路施工方案
- 安徽省亳州市蒙城县涡南片区联考2022-2023学年九年级上学期期中化学试题(含答案)
- 电站电工知识培训内容课件
- 电磁炉介绍与使用
- 北师大六上期中考试卷及答案
- 北京地理模拟中考试卷及答案
- 3-8-Diamino-6-phenylphenanthridine-生命科学试剂-MCE
- 汽车保养基础知识优秀课件
- 青少年运动员 运动损伤的预防 课件
- 音乐《上学歌》课件
- 绿色校园创建资料
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 2022年十部经典的三级片电影
- 六三制新青岛版四年级科学上册第一单元《动物王国》全部课件(一共5课时)
- 消防安全培训及应急演练主题教育课件PPT模板宣传PPT动态PPT
- 顶推法钢箱梁安装施工方案
- 中国诗词协会入会申请表
- 新版人民音乐出版社三年级(上册)音乐教案简版
评论
0/150
提交评论