| | |

arm世界之旅(二):cortex-金沙js1005线路

文章来源:米尔科技 发布日期:2013.7.19 浏览次数:1896 次

《》一文中,我们详细解读了arm的授权模式经营之道,理解了这家英国小公司是如何生存、壮大的。今天我们再转向技术方面,重点看看究竟是怎么回事儿。

【cortex-a架构体系】

在消费级产品领域(台式机、笔记本、平板机、智能手机),intel有两套架构,一是2008年引入的高性能和主流级别core(酷睿),二就是低功耗的atom(凌动)。

arm则有三套架构,分别是高端的cortex-a15、主流的cortex-a9、低功耗高能效的cortex-a7。intel的超低压版core y系列、atom可以说分别对应前两者,但是面对a7,intel还没有可以竞争的方案。

(arm其实还有cortex-r系列嵌入式、cortex-m系列微控制器方案,但不在本文讨论范围内。)

很显然,arm在移动领域已经有了完整的布局,intel则正努力将桌面和笔记本那一套拿过来。

a15、a7一高一低,可以组成big.little联合方案,但是要注意,a15并不是用来取代a9的,而在很长的一段时间内,a9并没有真正的后继者。

a15、a7未来将会分别被64位armv8架构的a57、a53所取代,a9呢?它的后代在哪里呢?这就是最近宣布的:cortex-a12。

a12将会和a57、a53形成新一代的“三驾马车”,但在架构上它其实还是32位的armv8,跟其它两位并不一样(这个后边详述)。


(注意横轴时间线不是产品上市时间,而是ip授权时间)

说起处理器的性能、功耗,除了依赖架构之外,生产工艺也是关键所在。当前的主流是28nm,接下来还会有20nm、16/14nm、10nm……

尤其是对于a15来说,28nm已经无法在提供足够性能的同时将功耗控制在合理水平,这也正是bit.little诞生的理由之一。如果过渡到20nm,a15的情况无疑会好很多。

当然,对于移动gpu也是同样的道理,比如imagination powervr 6系列宣布了那么久还停留在纸面上,除了开发周期之外最重要的原因就是当前工艺伺候不了它,而根据与台积电的合作,16nm才会是powervr 6系列的理想着陆点。

【a12架构纵览、前端设计】

从高端层面讲,a12是双发射、乱序执行架构,整数流水线10-12级(a9 8-11级),整合二级缓存和载入/存储、浮点、neon单元(标准配置而非可选),每个群簇支持最多四核心,也可以多个群簇并联,组成八核心、十二核心……

从指令集架构兼容性上讲,a12、a7、a15是一家的,都是32位的arm-v7a,均支持40位物理寻址(最大容量1tb)、128-bit axi4总线界面、虚拟化、整合缓存。

相比之下,a9支持的是32位物理寻址,2×64-bit axi4总线,外置缓存,neon单元也是可选的。


cortex-a12架构纵览

尤其值得一提的是二级缓存,a9上是外置的,需要操作系统单独支持,a12则和a15/a7一样完全整合,为所有核心共享,并有自己独立的电压和频率层,不过如果需要,后者也可以和cpu同步。

一级缓存是四路关联,容量可选32kb、64kb,同时缓存数据线(cache line)也翻番为64byte,以便更好地和ddr内存控制器对齐。

值得一提的是,a12最终也会支持big.little,同样能够搭配a7,但是目前的初始版本还不行,缺乏必需的一致性界面。


a9、a12/a7/a15架构特性对比

分支预测器比a9有了很大改进,可以大大改进能效、性能,不过在a12设计之初,arm对其性能估计不足,直到大约三个月前才意识到错误,但此时时间紧迫,arm必须做出选择:是照常发布这个低效率的设计,还是迅速寻找替换一个更合适的分支预测器?

a12团队最终选择了a53里的分支预测器,拉过来塞给a12,并做了一些细微的针对性调整。

【a12后端设计】

a12的前端虽然比a9效率更高,但真正的性能提升来自于核心内部的执行。类似a15,a12在功能单元之前引入了多个独立的发射队列。

指令解码进入微操作,重命名指令分派进入发射队列,然后微操作在操作数可用的时候从发射队列中发射出来。这一切都依赖于发射队列的正确顺序处理,a12是可以乱序执行的(绝大部分情况下)。

a9只有一个发射队列,只能处理4个解码指令;a12增加到了三个队列,每个都比a9里更大。仅此一点就能大大提升ipc。

这三个发射队列分别是:整数、fp/neon、载入/存储

下边就是a12、a9的简单架构对比图,其中蓝色部分是顺序执行的,粉色/黄色则是乱序执行的。很显然,a12仍然只是部分乱序架构,只不过比a9“更乱”而已。


cortex-a12


cortex-a9

a12保留了a9中的两条整数流水线,但是和a7/a15一样加入了对整数除法的支持,a系列其它架构都没有这一点,不过除此之外整数流水线没啥变化。

fp/neon单元的改进非常大。a9刚发布的时候,neon代码很少能用到,这也正是nvidia tegra 2去掉了它的主要原因,不过现在情况不同了,android和移动应用对neon的支持已经很好了。

a12仍然是整数和浮点操作的物理寄存器文件相分离,但是比a9里更大了。

a9中的浮点和neon指令都是顺序执行的,a12将它们改成了完全乱序,至少在非内存操作上如此。fp/neon发射队列是双发射的,分成两个流水线,都可以完全乱序操作,配合也很紧密,可以在浮点和整数单元之间快速转移数据。

agu单元也变成了两个,对应两条流水线,而且也成了完全乱序的。 

【提升40%?a12性能、未来展望】

a9架构诞生于2009年,当时智能手机才刚刚起步,而这几年的巨变让很多东西都完全变了,比如fp/neon指令大大增加了,内存访问频率更高了,应用性能要求更高了,a9在浮点、内存方面的缺陷就暴露了出来。

为此,a9架构这几年来也在不断改进,先后衍生了四个版本:最初的r1版对应40nm工艺,主频最高1ghz;r2版改进了预取部分,工艺不变主频可达1.2ghz;r3版来到了32nm工艺,配合改进与调校,频率也升至1.6ghz;最新的r4版由改进了薄弱的分支预测和内存系统,会用在28nm上,主频有望高达2.3ghz。

不过,这些细微的调整并不能掩盖a9本质上的劣势。这,就是a12要弥补的。

arm虽然也声称a9是乱序执行架构,但其实仅限整数部分,浮点和内存操作都是顺序的。a12则变成了一个几乎完全乱序的结构,各处设计也都有了改进。未来几年,a9仍将继续辅以并深挖潜力,但是很显然,a12会有更好的性能、更高的能效。

在同样的频率下,arm宣称a12的性能可比a9提升40%,比如照arm的说法,fp/neon的改进能让ffmpeg负载下同频率性能提升48%!当然实际应用中肯定没这么多。

能效和内核面积的改进更有趣。arm声称使用同样的制造工艺,a12的内核面积估计会比a9大最多40%,但能效可与a9持平或者更好。

a12 ip在几周前才刚刚最终定案,目前已经对外提供授权。按照以往的开发周期惯例,第一款芯片将在大约一年后诞生,第一款设备则可能要2014年底或者2015年初。这段时间就是a9发挥余热的最后时刻。

不过,移动市场发展这么快,两年后还需要a12么?特别是还有高通的krait 300的定位就很类似。或许还是那句话,没有很差的产品,只有不合理的定价。如果能比骁龙600系列便宜很多,a12一样会很吸引人。

最后提一句,arm表示会继续改进优化a15的功耗问题。

 

arm相关新闻

市场活动

研讨会议

培训课程

无线通讯市场

消费类电子产品

行业相关新闻

招聘动态

网站地图