找回密码
 立即注册
搜索
查看: 1003|回复: 0
打印 上一主题 下一主题
收起左侧

[电脑技术] 从Tegra K1和Denver 看那些年一直误会的NVIDIA CPU

[复制链接]

灰铜v1_04紫铜v2_01

跳转到指定楼层
楼主
 楼主| 发表于 2018-9-14 09:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提起NVIDIA,可能99%+的朋友第一反应是“显卡”和“GPU”。世界上两大GPU巨头之一、GPU领域绝对的霸主嘛,地球人都知道,前些天还刚刚发布了全新的Turing架构和RTX 2080Ti/2080/2070显卡呢。

  这其实也没什么毛病,不过近几年以来,人们在麻木于NVIDIA GPU强大的同时,似乎冥冥之中忽略了某件事情。NVIDIA的GPU强不?确实强,爆炸强,不管是PC端还是SoC上,有目共睹,人尽皆知……emmm,然后嘞?

  直到前阵子看到了这样一张图:



  显然,这是一张对目前市面上主流SoC的简要概括,生动形象简明易懂。不过看到最后一个的时候,我瞬间意识到了人们之前忽略了哪里:NVIDIA SoC的CPU怎么样,真的是像图上画的一样么?



  CPU不行?这还真不服

  实际上,NVIDIA对SoC的设计并不陌生,到目前为止他们已经发布了7代Tegra系列SoC。NVIDIA一直在Tegra SoC中使用自家的GPU架构,但前几代的CPU部分用的则是Arm公版CPU内核。与同时期的高通三星联发科处理器相比,除了“祖传”的GPU外并无其他出彩之处。倒也有不少手机和平板电脑使用了Tegra处理器,还算差强人意。

  然而即便时间仅止于此,我们似乎也挑不出NVIDIA SoC中的CPU有什么毛病。非要说的话,不知NVIDIA黄教主是否为苹果乔帮主的铁杆拥趸,这几代Tegra均没有集成neon协处理器,flash播放能力欠佳。至于使用Arm公版CPU内核虽然不假,但是同时期的三星华为联发科德州仪器用的也都是公版内核。



  更何况,NVIDIA在CPU上的野心和实力,远非人们的固有印象可以衡量。

  在2011年的CES上,NVIDIA对外公布了Denver计划,宣布将要开发基于64位Arm v8指令集的自研架构,用于从移动设备到服务器等各种设备。短短三年后的2014年CES,NVIDIA便推出了使用自研Denver架构的Tegra K1上,并依此成为了继苹果之后第二个发布基于Arm v8指令集的消费级SoC的公司。

  时间回退4个月,2013年9月,苹果在其A7处理器上出人意料地使用了基于Arm v8指令集的Cyclone 架构。此后的一年多时间里,市面上基于Arm v7指令集的Cortex A15公版架构和高通Krait自研架构,甚至包括同样基于Arm v8指令集的Cortex A57在内,所有其他同时期的CPU架构均被Cyclone横扫。

  除了Denver。

  据雷锋网(公众号:雷锋网)了解,传统的CPU架构设计分为两种:顺序执行和乱序执行。恰如其名,顺序执行体系严格按照接收顺序执行微指令,而乱序执行体系允许在不改变指令运算结果的前提下调整执行顺序。

  一直以来,乱序执行被认为是顺序执行发展到极限后的一次进化。CPU执行的任务纷繁复杂,某些情况下RAM等周边部件会阻塞指令的顺序执行,这时乱序执行便可以明显改善运算的灵活性,有效提高吞吐量。



  在此前雷锋网介绍Arm Cortex A76和三星Exynos M3架构的文章中,乱序执行曾不止一次被提及,可见在这些高性能Arm内核中,乱序执行似乎已经成为了不二的选择。不过,换用乱序执行需要增设乱序执行窗口,有效识别可以重新排序的指令,确保指令可以安全的乱序执行,这显然会拉高架构的复杂性,芯片尺寸和功耗都会明显上升。

  而NVIDIA在提升架构性能方面则另辟蹊径,认为乱序执行并不是解决问题的唯一方案。不光敢想,Denver真的放弃了Arm公版高性能架构中主流的乱序执行方式,转而采用了低功耗处理器上常见的顺序执行,并为其配以一套高效的二进制翻译和代码优化方案。

  NVIDIA的思路很简单:顺序执行体系面临的基本问题很明确,无外乎内存停滞等硬件问题,以及指令排序不良等软件问题。那么这些问题一定要硬改架构体系么,能否在“软层面”中解决? 而这就是Denver的核心思想。



  这个架构不寻常

  Denver一个不寻常的地方是,它内部的指令格式与ARMv7或ARMv8大相径庭。在具体的内部结构上,Denver使用了在GPU中颇为常见的VLIW(Very Long Instruction Word,超长指令字)格式执行指令(毕竟NVIDIA)。

  而在架构前端,Denver的指令解码宽度达到了前无古人的7发射,比Cortex A15(3发射)、Cortex A57(4发射)和苹果Cyclone(6发射)都要更宽。NVIDIA官方称其为“7+”架构,其中的“+”指的是NVIDIA为Denver设计的DCO(动态代码优化器)。



  DCO的任务是将Arm代码转换为Denver的原生格式,并优化此代码以使其在Denver上运行得更好。对于CPU整体而言,DCO是最关键的一个环节,因为它的性能将直接由DCO决定。

  长期以来,一直有传言称Denver最初的设计意图瞄准的是x86,其底层设计和二进制翻译机制旨在不侵犯任何x86专利的前提下兼容x86指令的执行。不管这传言是不是真的,最终结果是NVIDIA在软层面上有了惊人的成果,打造出了一套可以将硬件设计和指令集分离的架构。

  然而尽管DCO如此逆天,NVIDIA还是在其之外配备了一套Arm指令解码器。虽然官方表示这个Arm解码器并不是“备胎”,但实际来看显然是“口嫌体正直”,Denver的大部分指令都来自二进制翻译,这个Arm解码器只有区区2指令宽度(Cortex A8级别),只在二进制翻译无法高效处理时才会接手以直接解码Arm指令。



  与此同时,由于NVIDIA选择了在“软层面”中解决问题的方式,Denver也拥有了其他架构都不具备的可升级性,如果DCO有改进的话,NVIDIA可以进一步部署新版本的DCO。

  而最终Denver的实际性能也足以用技惊四座来形容,在SPECint2000测试中,Denver相比Cortex A15有了35%的平均提升,最高提升幅度甚至高达67%:



  更为具体一点,使用Denver核心的Tegra K1性能完全压过了同时期Cyclone核心的苹果A7,相较于Intel Haswell核心的赛扬2955U也是互有来回。


插件设计:zasq.net
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋| ( Q群816270601 )

GMT+8, 2024-5-3 16:28 , Processed in 0.838407 second(s), 46 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表