商业微处理器:历史、理论和趋势(四)从1980 年到1995 年:计算机体系结构理论的热潮

从1980 年到1995 年:计算机体系结构理论的热潮

怎样才能制造出性能更好的计算机?在此之前计算机的发展大多依靠架构师的经验和直觉,一旦架构师直觉失误或者技术无法支撑架构师的想法,很可能一代计算机的研究就荒废掉,一家公司也可能因此倒闭。但从1980 年开始,计算机开始走上一条理论指导实践的道路,如何平稳的提升计算机的性能,成了学术界的研究热点。这方面的技术主要分为三大类,指令级并行、数据级并行和线程级并行。首当其冲的,是对指令集的调整。

精简指令集计算机

1980 年Patterson 提出了要设计精简指令集计算机RISC[29]。当时的微处理器设计面临许多困难,包括CISC 芯片设计复杂度增加,复杂指令导致编译器选择指令困难。而从实际指令使用情况来看,IBM 360 上10 条指令就可以满足程序80% 的需要,要覆盖99% 的需要也不过需要30 条指令。RISC 具有许多优点,例如方便VLIW 设计、降低设计成本、更好的利用芯片面积和更高的指令速度。Patterson 还举例了在IBM、贝尔实验室和UCB 的相关研究工作,推动RISC 的发展。
尽管遇到了一些反对的声音[30],但后来的历史表明RISC 的道路是正确的。后来的计算机要么是基于精简指令集的,例如MIPS、ARM、RISC-V,要么前端仍然是复杂指令,但是通过译码转换成精简指令集再执行,例如Intel、AMD 和IBM。指令集是计算机硬件和软件的接口,新的指令集得到认可,接下来的任务就是如何高效的利用流水线。为此人们开始深入挖掘微处理器指令级并行的能力。

超长指令字与超标量

超长指令字VLIW 技术和超标量Superscalar 技术在思想上非常类似,都试图在一个周期里发射多条指令,提升微处理器的并行度。差别在于,超长指令字需要编译器分析指令间的依赖关系,并进行打包,以提示微处理器并行发射;而超标量则完全是硬件执行的动作,由硬件完成依赖分析和发射。目前大多数的微处理器都采用超标量的技术以减轻编译器的负担,而且可以在更大的指令窗口中进行调度,超长指令字的概念提的比较少了。在接下来要介绍微处理器中,大多数都采用了超标量技术,每周期可以发射多条指令,典型的例子包括MIPS R10000[31]。IBM 的Power 系列有些特别,采用对指令打包处理的方法提供并行性[32]。

分支预测器

分支预测器是至今仍是微处理器研究的重要部分,性能预测器每提升一个百分点都能明显提高微处理器的性能,绝大多数商用微处理器的分支预测器设计都是不公开的。1993 年的一篇研究报告[33] 曾经将分支预测器的性能在当时的负载条件下提高到98%,因此被许多微处理器借鉴[32, 34, 35]。我们来看他是怎么做的。

联合分支预测器使用一个局部预测器和一个全局预测器同时预测分支方向,并使用第三个预测器预测使用哪一个结果。局部预测器使用部分PC 索引,每个表项对应一个两位的计数器,计数器的高位作为预测方向,并根据预测的正确与否做出相应的调整。全局预测器使用PC 和到达该分支的程序路径上其他分支的跳转方向作为索引,可以使用拼接或者异或的方式整合信息。每个条目的结构和局部预测器类似。选择预测器同样使用PC 索引,每个表项也是一个两位计数器,其结果表示选用全局预测器的结果还是局部预测器的结果。
分支预测器相关工作近年来仍有学者研究,在新的工作负载和新的技术手段之下继续提升分支预测的效率。同时,也有人研究如何预测分支跳转的地址,以及和程序调用有关的分支预测。除了分支预测正确率之外,分支预测失败时的惩罚也是很重要的参数。

指令级并行的极限

就在人们兴致勃勃的想尽各种方法挖掘指令级并行的时候,一篇文章的出现打破了人们的美梦:指令级并行是有极限的[36]。假设在完美的寄存器重命名、完美的分支预测器、完美的别名分析、超大的指令窗口、运算部件全流水的情况下,程序本身的并行度有多少?模拟的结果表明并行度(按照文中的定义)大概在20到60 左右,一些轻微的不完美就会使得该值将至10 左右。这样的结果大致指明了指令级并行,或者叫循环级并行的极限。大概十年之后,随着集成晶体管的数量进一步增加,微处理器的设计者们终于撞到了指令级并行的极限上,不得不转而寻找其他方法。

Vector、SIMD 与GPU

想要突破指令级并行的极限,一种方法就是通过数据级并行。早期的超级计算机,例如CDC 6600、Cary-1、Illiac IV,都有向量执行的功能,摩尔定律的发展使得在微处理器中添加向量部件成为可能。另一方面,多媒体应用的兴起也迫切需要SIMD 的支持,这类负载中最常见的操作就是对一组数据采取同样的操作行为。Intel 在其后续微处理器[37–39] 当中逐步增加了向量指令的支持,增加了诸如MMX、SSE、AVX 指令集供程序员使用。同时运算部件增加向量运算单元,支持SIMD 功能,并逐步提升向量宽度。将数据级并行做到极致的当属NVIDA 公司的GPU,通过专用硬件为图形工作者、游戏爱好者、机器学习研究者提供向量加速和强大的浮点计算能力。

多线程技术

还有没有其他方法提高并行度呢?有的,答案是多线程技术。一直以来,一个微处理器上同一时间只能运行一个线程,通过操作系统的帮助完成线程间切换达到多线程同时运行的假象。如果每个微处理器上可以运行多个线程,那么当某个线程因为流水线阻塞而等待的时候,执行另一个线程的指令是不是就能填补原本被浪费的时钟周期了呢?本着这样的想法,主流的微处理器厂商纷纷推出了超线程技术[32, 38, 40]。尤其是在服务器这样需要同时对多个链接进行服务的场景,对多线程技术需求更大,因此Power 系列每个核心可以支持4 个线程同时运行[41]。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容