轻松读懂应用处理器微架构 版1018.docx
- 文档编号:30504638
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:22
- 大小:591.08KB
轻松读懂应用处理器微架构 版1018.docx
《轻松读懂应用处理器微架构 版1018.docx》由会员分享,可在线阅读,更多相关《轻松读懂应用处理器微架构 版1018.docx(22页珍藏版)》请在冰豆网上搜索。
轻松读懂应用处理器微架构版1018
第10页:
ARMCortex-A9内核微架构特点
Cortex-A9的代号为Falcon,是在ARM公司在2007年10月3日发布的IPcore,距今大约有五个年头。
Cortex-Ax这个名字中后缀A表示属于Application(应用处理器),Cortex另有M系列(即单片机或者微控制器)、R系列(实时应用),这里显然是A系列的规格最高,具备MMU(内存管理单元)。
基于Cortex-A9的芯片实现有前面提到的NVIDIATegra2/Tegra3、AppleA5/A5X以及TIOMAP4430/4440、ST-爱立信NovaThorU8500/U9500/LT9540、STMSPEAr1310、三星Orion/Exynos4210、华为K3V2、ZiiLabsZMS-20/ZMS-40、SonyCXD5315GG(PSV)、联发科MT6577、华为海思K3V2等等,是目前GoogleAndroid操作系统高端手机、智能平板阵营中最主流的CPU内核。
Cortex-A8微架构
Cortex-A9微架构
Cortex-A9的前身是Cortex-A8,它们同属于ARMv7ISA的实现,和Cortex-A8相比,Cortex-A9除了流水线更短、增加了专门的多核方案等大家熟知的变化外,还具备多项改进。
1、Cortex-A9拥有众多RISCCPU的先进特性,例如推测数据存取、动态分支预测、多指令发射、硬件Cache一致性、乱序执行、寄存器重命名,号称史上第一枚乱序执行移动处理器。
除了双指令发射和分支预测外,Cortex-A8都并不具备,因此在Cortex-A9上汇编码优化、NEONSIMD的重要性相对来说要低很多(经过调优的汇编码在A8上可以做到10-30倍性能,而A9一般只会有2-5倍,如果是A9使用NEONCIntrinsics的话性能基本上和汇编一样)。
2、Cortex-A9的每条L1CacheLine是32字节,Corte-A8是64字节。
CacheLine又称作datablock(数据块)或者CacheBlock,Cache每次更新都以固定大小的CacheLine为单位。
CacheLine的大小主要影响命中率、内存存取效率、发生Cache命中缺失时候的性能惩罚时间。
3、Cortex-A9的L2Cache位于“核外”(ARM对应的方案是PL310或者更新一点的L2C-310),而Cortex-A8则是速度更快的核内L2Cache。
从对Cortex-A81GHz(三星SamsungHummingbird,即Exynos3110)和CortexA-A91.2GHz(三星Exynos4210)实测来看,A8/A9的L1cache延迟分别为3周期和4周期,L2Cache延迟(含L1Cache延迟但是不含L1/L2TLB命中缺失惩罚的情况下)分别为13周期和23周期。
4、Cortex-A9MPCore的各内核L1Cache采用了数据、代码分离式设计,L1数据Cache具备硬件Cache一致性。
各个内核共享外部L2Cache。
5、Cortex-A9具备完整的VFPv3FPU,而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条NEONL/S指令搭配一条非L/SNEON指令。
8、Cortex-A8的NEON单元位于ARM单元下游,所以NEON单元访问寄存器和内存更快,而且数据可以很快从ARM寄存器搬到NEON/VFP单元寄存器,但是将NEON/VFP寄存器数据搬到ARM寄存器的话就非常慢,会导致Cortex-A8的流水线停摆20个周期。
9、Cortex-A8的NEON和ARM各有一个分离的L/S单元,如果一起对同一块CacheLine进行Load或者Store操作的话,会导致额外的20个周期延迟。
10、Cortex-A9对多线程化同步采用LDREX/STREX,不会杜塞所有的内核,而Cortex-A8对互斥使用简单的断禁制。
11、所有的Cortex-A8都集成了NEONSIMD单元,但是Cortex-A9则未必,例如NVIDIATegra2就没有集成NEON,不过Tegra3则具备NEON。
如果使用7-zip(不包含任何浮点)实测来看,Cortex-A81GHz的压缩(受内存时延、数据Cache大小和速度以及TLB影响较大)/解压缩(受CPU整数性能影响较大)性能相当于Corei79202.67GHz的3.5%和5.5%;而Cortex-A9双核则是Corei7920的8.8%和12.7%。
第11页:
ARMCortex-A15内核微架构特点
代号Eagle的Cortex-A15是在2012年9月发布的ARMv7架构实现,是ARM首次引入三路指令解码的微架构IPcore,目前三星的Exynos55250(双核,32nmHKMG,1.7GHz)是市场上能看到的第一波Cortex-A15产品,Chromebook、Nexus10(均在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并不具备这样的分层结构。
动态分支预测能力是影响现代风格处理器的关键因素之一,像Pentium4的BTB是4K条目,SandyBridge据说达到8K~16K。
虽然A15的两级BTB条目总数较A8/A9少,但是A15的ReturnStack条目数从8条增加到了18条,取指带宽从之前的64-bit提升到128-bit,而且完全支持边界非对齐地址的拾取。
4、Cortex-A15支持VFPv4,具备硬件FMA指令执行,可以在同频下提供两倍的峰值浮点性能。
此外,A15还具备硬件除法指令,在A9上这需要接近50个周期来执行。
5、A15的周边总线为AMBA4,128-bitmaster界面,A9的AMBA3的master界面是64-bit。
6、虽然ARMv7是32-bitISA,但是现在Cortex-A15支持40-bit物理定址(类似于当年的PentiumPro和Atlhon),而且L1/L2Cache具备ECC,因此理论上适用于服务器级应用。
7、A15和A9都有一个类似的smallloop缓存,用于存放小循环,让执行单元无需访问指令cache就能抓到指令。
在A9上它可以存放大小为64字节的指令。
而在A15上则是32条目,可以存放两条前转分支和一条后转分支,而且A15的smallloop缓存存放的是已经解码的微操作,这意味着连解码步骤也能节省掉。
这类似于Intel的做法:
先在Conroe上引入loopbuffer,然后在Nehalem引入uoploopbuffer(28条目),到了SandyBridge则彻底改成了uopcache(1500个uop),逐步改进。
CortexA15的整数性能为3.5~4.01DMIPS/MHz,相比起A9的2.5DMIPS/MHz和A8的2.0DMIPS/MHz有明显的改进,不过因为三路超标量而带来的各种资源增加,A15需要更先进的制程(32纳米或更先进)才能在手机、平板上变得比较适用。
第12页:
高通Krait内核微架构特点
上图是高通2012年11月于分析者日会议上公布的AP产品路线图
虽然2012年年初的时候NVIDIATegra3大放异彩,但是到了临近年末的时候,高通的Snapdragon4ProAPQ8064却已经是成为了几乎所有性能导向新Android手机的主角,其中一个重要原因就是它采用的Krait微架构能提供对手不具备的特性。
Krait微架构是高通第四代Snapdragon(骁龙)处理器所搭配的CPU内核微架构,是ARMv7架构的实现,属于高通的ARM架构级授权、自行研发的处理器内核微架构。
Krait的前身是Scorpion,在产品布局上它和Scorpion有些类似,例如Scorpion定位于Cortex-A8和Cortex-A9,而Krait的定位也是类似,即Cortex-A9和Cortex-A15之间,具备一些Cortex-A15的特征。
例如L0cache(Cortex-A15上有类似作用的loopbuffer,相当于L0I-cache,指令调度器无需经过解码器就能抓到小循环的微操作指令)、三路超标量、VFP4浮点单元、128-bitSIMD处理能力(高通称SIMD单元为VeNum,ARM自己则称之为NEON)以及基于A15同级的半导体制程节点。
至于有人说Krait是A9的改进版,这样的观点我很难认同,它和Scorpion都类似于当年DEC获得ARMv4ISA授权而自行研发的微架构。
不过另一方面,Krait的乱序执行要逊色于Cortex-A15,后者具备八个指令发射端口和八个执行端口,每一个执行端口都对应一个(准)保留站(有些类似于AMDK7-K10),而Krait只有四个指令发射端口和七个执行端口,并且采用的是类似Cortex-A9或者说PentitumPro方式的单个大规模指令发射队列单元。
微架构对比
ARMvs高通
ARM11
ARMCortexA8
ARMCortexA9
ARMCortexA15
QualcommScorpion
QualcommKrait
解码能力
单路
双路
双路
三路
双路
三路
整数流水线
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)
半导体制程
90nm
65nm/45nm
40nm
32nm
40nm
28nm
典型频率
412MHz
600MHz/1GHz
1.2GHz
2GHz
1GHz
1.5GHz
在现实测试中,Krait的表现和它的微架构一样,提供了比Cortex-A9更强的性能,在对单线程性能较高的应用中,即使是双核版的Karit都可以比四核Cortex-A9更快。
第13页:
苹果Swift内核微架构特点
正如我们前面提过的,苹果公司在上世纪九零年代就已经和ARM合作并且提供了一些微架构设计上的修改方案,因此苹果对ARM一点都不陌生甚至有非常丰富的经验。
从iPad、iPhone4/iTouch4、AppleTV2开始,苹果开始真正介入ARM芯片设计,推出了名为A4的自行设计ARM处理器。
A4采用了ARM授权的Cortex-A8IPCore,但是苹果找来了Intrinsity公司(已经被苹果收购)和三星公司合作进行了一些调优,可以让A4的频率跑得比基于上一代制程的Cortex-A8更快。
曾经有说法认为A4的L2cache大小是640KiB,但是后来确认修正为512KiB(这是ARMCortex-A8内核的可选配置方式之一)。
A5系列依然是采用ARMIPcore,从Cortex-A8升级为Cortex-A9双核,不过整个A5系列出现了三个版本,即APL0498、APL2498、APL5498(A5X),三个版本的芯片面积各不一样,其中A5X的GPU是四核PowerVR5并且拥有4通道内存总线,定制化设计在这里体现得非常明显。
真正的定制化设计是从A6开始,苹果公司给A6搭配的CPU内核是完全有自己团队开发的Swift,不仅这样,苹果还提出了一个新的名字:
ARMv7s。
传统上,ARMv7是属于ISA版本名称,不过ARMv7s至今都并未出现在ARM官网的公开资料里,因此ARMv7s可能并非ARM的产物,而是苹果自己在ARMv7基础上做的一个架构优化定义,让编译器可以为Swift微架构匹配对应的调优,本质上ISA还是ARMv7A。
CPU
iPhone
iPad
iPodTouch
AppleTV
ISA
内核
芯片名称
"ARMv7s"
AppleSwift
AppleA6X
4
AppleA6
5
ARMv7A
ARMCortex-A9
AppleA5X
3
AppleA5
mini
4S
2
5
3
ARMCortex-A8
AppleA4
4
1
4
2
三星S5PC100
3GS
3(32/64GB)
ARMv6
ARM1176JZ(F)-S
3(8GB)
3
2
1
1
那么Swift和以往的Cortex-A9相比有哪些改进呢?
苹果公司并未详细说明,传统上这家公司就是这样,千方百计捂着,不过Anandtech利用一些自己编写的微型基准测试程序进行了一些探测,以程序员的角度大致估量出了Swift的微架构是长得如何了。
在前端部分,Swift具备三个指令解码器,可以每个周期完成三条指令的解码,而在指令分发器上,具备五个发射端口,浮点单元、整数单元各占两个,还有一个专供Load/Store单元使用,具备乱序执行能力、整数流水线深度为12级,cache子系统的时延比Cortex-A9低了差不多一半。
“ARMv7s”的设立估计就是让编译器获知编译执行对象是Swift,这样就能对各种指令顺序进行一些预调度,确保尽可能低的CPI。
简而言之,A6系列就是采用了比A5系列更先进制程和微架构的产物,其中的CPU内核则是苹果首次真正完全执行开发的设计,未来是否会在GPU上也有类似的动静将会是值得关注的。
第14页:
英特尔Bonnell/Saltwell内核微架构特点
Atom是英特尔计划实现x86anywhere战略的重要产品,为此它不惜卖掉了口碑不错的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,具备uopcache
Bonnell采用超标量流水线设计,可以每个周期执行最多两条指令,指令需要遵循一定配对原则才能实现超标量执行(类似于Pentium的U/V设计),具备16级工位,支持x86_64指令集以及最高SSE3扩展,但是手机版本只支持32-bitISA,内存容量也被限制在1GiB,对应平板和低端笔记本等版本则打开了64-bitISA支持,内存容量放宽到2~4GiB。
相对于当前的许多竞争对手来说,英特尔在产品技术细节公布上要大气许多,各种数据表、涉及微架构内部关键特征的编程优化手册都能在产品发布后就能公开下载到,这让我们可以更详细的为大家介绍这款产品。
1、Saltwell的分支预测器是一个具备8096条目(两倍于Bonnell4096条目)的全局式分支预测器;
2、Lincroft时代引入的48字节后段取指缓存(post-fetchinstructionbuffer)在Saltwell里升格为一个高速缓存(Cache),以便减少Saltwell的重复取指。
该技术类似于Conroe/Merom的LoopStreamDetector(循环指令流侦测器),前面我们在介绍ARMCortex微架构的时候也有提到类似的技术。
3、Saltwell的L1I-Cache是32KiB8路相关联,L1D-Cache是单端口24KiB6路相关联。
4、Saltwell的指令发射端口依然和Bonnell那样是采用Pentium配对式发射风格的U/V流水线设计;
5、Saltwell能实现更多的整数指令配对以及更快的memcopy微代码规则。
6、加入了不间断时间标签计数器(TSC)和本地APIC计时器,主要是为了协助电力管理和减少唤起CPU的情况。
7、L2Cache维持之前的512-KiB8路相关联设计,运行于内核同频,读取带宽为每周期32字节(256-bit),可支持32个待发cache请求。
改变的地方主要是L2Cache的电压轨线与内核是分开了的。
例如Saltwell内核的Vmin是0.7伏特,L2Cache则在固定的1.05伏特电压轨线上跑,这样的设计有助于减少C6(最节电模式)电力状态转换时延。
8、频率变频粒度更精细。
以Z2460为例,虽然CPU的最高持续频率为1.3GHz,但是频率的变动范围达到1.6GHz,步进粒度为100MHz;而之前的Z600系列频率范围是0.2GHz~0.8GHz持续,最高1.2GHz。
9、Saltwell和之前的Bonnell系列微架构同样没有专用的硬件整数乘法、除法单元,这些操作都是和浮点硬件共享。
10、在Medfield中还有一块独立分离于512KiBL2Cache外的256KiBSRAM,位于不间断模块内,主要用图像信号处理器存放图像数据以及优化最低漏电。
在SOC进入节电模式后,这块SRAM还会被用于存放架构状态,就好象Saltwell内核具备自己的C6SRAM来存放x86状态,这块更大的SRAM则是存放整个平台的。
在进入S0ix状态时,像图形或者视频编解码器等单元都会被关掉,它们的状态信息和配置信息都会保留在这块256KiBSRAM里。
第15页:
ARMCortex-A5/Cortex-A7微架构的特点
中低价位的智能手机势必成为2013年亮点,海量的千元以下甚至600元以下的智能手机、平板电脑将会在这一年推出,不过因为成本限制,它们在各方面的规格必然比更高价位的产品有所削弱,其中之一当然是必定搭载的应用处理器。
中低价位市场是ARM所最擅长的领域,目前它的产品线中除了像当年AppleiPhone1所使用的ARM11内核外,还有接替ARM11的Cortex-A5以及接替Cortex-A8的Cortex-A7。
ARM微架构对比
ARM11
CortexA5
CortexA7
CortexA8
CortexA9
CortexA15
解码能力
单路
单路
双路
双路
双路
三路
整数流水线
8级
8级
8级
13级
8级
15级
乱序执行
否
否
否
否
是
是
浮点单元
VFP11
(流水线式)
VFPv4
(流水线式)
可选VFPv4
(流水线式)
VFPv3
(非流水线式)
可选VFPv3
(流水线式)
VFPv4
(流水线式)
SIMD(NEON)
不具备
可选MPE
(128-bit)
可选MPE
(64-bit)
具备
(64-bit)
可选
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 轻松读懂应用处理器微架构 版1018 轻松 读懂 应用 处理器 架构 1018